Показать сообщение отдельно
Старый 28.05.2009, 13:01   #1  
Didukh84 is offline
Didukh84
Участник
 
57 / 10 (1) +
Регистрация: 09.06.2006
Как работает индекс и кеш запросов?
Добрый день.
Возможно это уже обсуждалось, но полной информации я, к сожалению, не нашел :-(
Выполняется аксаптовский код
select sum(CostAmountPosted), sum(CostAmountAdjustment) from inventTrans
where inventTrans.InventTransId == '03045451' &&
inventTrans.StatusIssue == StatusIssue::None &&
inventTrans.StatusReceipt == StatusReceipt::Purchased &&
inventTrans.InvoiceId == '90003347';
На профайлере SQL отлавливаю данный запрос. Получаю следующее

exec sp_cursorprepexec @p1 output,@p2 output,N'@P1 varchar(1000),@P2 varchar(1000),@P3 int,@P4 int,@P5 varchar(1000)',N'SELECT SUM(A.COSTAMOUNTPOSTED),SUM(A.COSTAMOUNTADJUSTMENT) FROM INVENTTRANS A(INDEX(I_177STATUSITEMIDX)) WHERE ((DATAAREAID=@P1) AND ((((INVENTTRANSID=@P2) AND (STATUSISSUE=@P3)) AND (STATUSRECEIPT=@P4)) AND (INVOICEID=@P5))) OPTION(FAST 2)',@p5 output,@p6 output,@p7 output,'guk',' 03045451',0,1,' 90003347'


Вопрос в следующем, откуда взялся хинт по индексу
I_177STATUSITEMIDX? Насколько я понимаю индекс приходит уже с приложения (проверял через Query Analyzer без него - работает быстрее и индекс берется другой). Я так понимаю, аксапта где-то хранит у себя в кеше или еще где-то данный индекс. Где это можно посмотрет? Чем руководствуется Система, когда сюда его подцепляет (данный индекс неоптимален ( )
Заранее благодарю за помощь
Версия аксапты AX3Sp3CU1, версия сервера БД SQL2005 SP2 x64, версия ОС - Win2003SP2 x64
__________________
Жить все веселей!.. AX3SP3CU1