AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Администрирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 06.03.2007, 16:04   #1  
sergeypp is offline
sergeypp
Ищу людей. Дорого.
Аватар для sergeypp
 
433 / 174 (6) ++++++
Регистрация: 08.11.2003
Адрес: Казань
По совету Mazzy мы закрыли индекс BatchIdIdx конф ключом.. поскольку партии у нас не используются..
вот пример запроса

Код:
	select forcePlaceholders forceSelectOrder firstOnly recId from inventDim
		index hint BatchIdIdx
		where inventDim.inventBatchId   == inventBatch.inventBatchId
	join tableId from inventSum
		index hint DimIdIdx
		where inventSum.inventDimId	 == inventDim.inventDimId	&&
			  inventSum.closed		  == NoYes::No				&&
			  inventSum.itemId		  == inventBatch.itemId;
В данном случае генерится след код
Код:
SELECT A.RECID,A.INVENTDIMID 
FROM INVENTDIM A
		,INVENTSUM B(INDEX(I_174DIMIDIDX))  
WHERE ((A.DATAAREAID='dat') AND (A.INVENTBATCHID=''))AND ((B.DATAAREAID='DAT') AND (((B.INVENTDIMID=A.INVENTDIMID) AND (B.CLOSED=0)) AND (B.ITEMID='0000005'))) 
OPTION(FAST 2,FORCE ORDER)
т.е. все правильно хинт по индексу не подставляется на таблицу inventDim. Но остается условие A.INVENTBATCHID=''. Может имеет смысл убрать все с полем INVENTBATCHID из кода.. что бы оптимизировать код
В планах выполнения особой разницы не заметил
Это с условием A.INVENTBATCHID=''

Что посоветуете??
Код:
768268	  1				  |--Clustered Index Seek(OBJECT:([domoNew].[dbo].[INVENTDIM].[I_698DIMIDIDX] AS [A]), SEEK:([A].[DATAAREAID]='dat'),  WHERE:([A].[INVENTBATCHID]='') ORDERED FORWARD)																					  21		  4		   3		   Clustered Index Seek		   Clustered Index Seek		   OBJECT:([domoNew].[dbo].[INVENTDIM].[I_698DIMIDIDX] AS [A]), SEEK:([A].[DATAAREAID]='dat'),  WHERE:([A].[INVENTBATCHID]='') ORDERED FORWARD								  [A].[INVENTBATCHID], [A].[INVENTDIMID], [A].[RECID]  23050.289				0.10497055			   0.10497055			   115		 0.2099411				[A].[INVENTBATCHID], [A].[INVENTDIMID], [A].[RECID]  NULL	 PLAN_ROW					   0		1.0
Это без условия
Код:
768268	  1				  |--Clustered Index Seek(OBJECT:([domoNew].[dbo].[INVENTDIM].[I_698DIMIDIDX] AS [A]), SEEK:([A].[DATAAREAID]='dat') ORDERED FORWARD)																													   22		  4		   3		   Clustered Index Seek		   Clustered Index Seek		   OBJECT:([domoNew].[dbo].[INVENTDIM].[I_698DIMIDIDX] AS [A]), SEEK:([A].[DATAAREAID]='dat') ORDERED FORWARD																   [A].[INVENTDIMID], [A].[RECID]				 23050.289				0.10496621			   0.10496621			   115		 0.20993242			   [A].[INVENTDIMID], [A].[RECID]				 NULL	 PLAN_ROW					   0		1.0
__________________
Внедрение, развитие и поддержка DAX и RPA
spp16rus | sergeypp@gmail.com
Старый 06.03.2007, 22:38   #2  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от spp16rus Посмотреть сообщение
По совету Mazzy мы закрыли индекс BatchIdIdx конф ключом.. поскольку партии у нас не используются..
Если партии не используются совсем то и сами партии тоже стоит выключить.
Ключ надо навесить и на поле inventDim.inventbatchID, и на индекс.
Этого будет достаточно.

См. InventDim::dimEnabledFieldList()
__________________
полезное на axForum, github, vk, coub.
 


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 08:33.