Цитата:
Сообщение от
Didukh84
P.S. даже и хинта не нужно: просто index TransIdIdx хватило ;-)
Директива
index добавляет сортировку по полям индекса и как написал
AndyD (поскольку добавилась сортировка) у вас план запроса должен стать(так ли это?) :
Цитата:
Сообщение от
AndyD
X++:
SELECT SUM(A.COSTAMOUNTPOSTED),SUM(A.COSTAMOUNTADJUSTMENT)
FROM INVENTTRANS A
WHERE ((DATAAREAID=?) AND ((((INVENTTRANSID=?) AND (STATUSISSUE=?)) AND (STATUSRECEIPT=?)) AND (INVOICEID=?)))
OPTION(FAST 2)
В случае же c
index hint TransIdIdx план запроса должен стать
X++:
SELECT SUM(A.COSTAMOUNTPOSTED),SUM(A.COSTAMOUNTADJUSTMENT)
FROM INVENTTRANS A (INDEX(I_177TRANSIDIDX))
WHERE ((DATAAREAID=?) AND ((((INVENTTRANSID=?) AND (STATUSISSUE=?)) AND (STATUSRECEIPT=?)) AND (INVOICEID=?)))
OPTION(FAST 2)
Поиск по АОТ(искал только по коду) для AX 3.0 SP2 данного запроса ничего не дал. Поэтому попробуйте найти данный запрос в AX и захинтовать другой индекс.
P.S. Кстати в стандарной AX запросы вида
X++:
select sum(CostAmountPosted) from InventTrans where InventTrans.InventTransId == ...
в большинстве своем идут в связке с
index hint TransIdIdx.(возможно это как то и связано с тем, что ядро AX само вставляет хинты в запрос)