Показать сообщение отдельно
Старый 04.02.2010, 15:58   #1  
raz is offline
raz
NavAx
Аватар для raz
NavAx Club
Лучший по профессии 2014
Лучший по профессии 2009
 
1,490 / 1060 (38) ++++++++
Регистрация: 22.07.2003
Адрес: МО
Если в запросе у первой таблицы CacheLookup = None, то запрос идет без NOLOCK
Вчера обнаружил интересную фичу для 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)