Вчера обнаружил интересную фичу для Ax3 (когда MS её уже списал).
Если в запросе у первой таблицы CacheLookup = None, то запрос идет без NOLOCK.
Имеем тестовый job.
X++:
static void TEST_Job1(Args _args)
{
InventTable InventTable;
InventSum InventSum;
;
while select InventTable
group by ItemId
join sum(PostedQty) from InventSum
where InventSum.ItemId == InventTable.ItemId
{
break;
}
}
Настройки CacheLookup у InventTable по умолчанию Found.
Запрос:
X++:
SELECT A.ITEMID,SUM(B.POSTEDQTY)
FROM INVENTTABLE A WITH( NOLOCK),INVENTSUM B WITH( NOLOCK)
WHERE (A.DATAAREAID=?)
AND ((B.DATAAREAID=?)
AND (B.ITEMID=A.ITEMID))
GROUP BY A.ITEMID
ORDER BY A.ITEMID OPTION(FAST 6)
Меняем CacheLookup у InventTable на None.
Запрос:
X++:
SELECT A.ITEMID,SUM(B.POSTEDQTY)
FROM INVENTTABLE A,INVENTSUM B
WHERE (A.DATAAREAID=?)
AND ((B.DATAAREAID=?)
AND (B.ITEMID=A.ITEMID))
GROUP BY A.ITEMID
ORDER BY A.ITEMID OPTION(FAST 6)