Показать сообщение отдельно
Старый 29.05.2009, 07:22   #14  
SRF is offline
SRF
Участник
MCBMSS
Axapta Retail User
 
376 / 562 (19) +++++++
Регистрация: 08.08.2007
Записей в блоге: 1
Цитата:
Сообщение от 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 само вставляет хинты в запрос)