Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 [2]      все
 Re: Вопрос по производительности  [new]
o-o
Guest
loik,

давайте план к этому запросу
15 апр 15, 13:48    [17518327]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по производительности  [new]
loik
Guest
o-o
loik,

давайте план к этому запросу


приложил

К сообщению приложен файл (select_Anonymized - Copy.sqlplan - 19Kb) cкачать
15 апр 15, 14:25    [17518590]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по производительности  [new]
o-o
Guest
с этим планом ок,
а можно снова план с переменной посмотреть,
и чтобы было подписано,
какие столбцы из какого индекса берутся.
15 апр 15, 17:12    [17519756]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по производительности  [new]
loik
Guest
o-o
с этим планом ок,
а можно снова план с переменной посмотреть,
и чтобы было подписано,
какие столбцы из какого индекса берутся.


так нормально?

К сообщению приложен файл (selectTableVar_Anonymized.sqlplan - 17Kb) cкачать
15 апр 15, 17:48    [17519927]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по производительности  [new]
loik
Guest
loik
o-o
с этим планом ок,
а можно снова план с переменной посмотреть,
и чтобы было подписано,
какие столбцы из какого индекса берутся.


так нормально?


o-o сможете помочь?
16 апр 15, 11:50    [17522630]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по производительности  [new]
o-o
Guest
loik,
давайте ему насильно индекс пропишем:
SELECT [a].[carWin]  					  
			,[a].[carArticul]					
			,[a].[Survey_YMD]		
			,[a].[ManagerId]   				
			,[a].[SellerShopCode] 
			,[a].[BuyerShopCode] 		
			,[a].[BuyerName] 				
			,[a].[BuyerAddress]  
			,[a].[CreateUserId]  
			,[a].[CreateDate] 			
		FROM  Sales a with(nolock, index(IDX_FormattedCarWin))
			JOIN #TmpWins s
			ON [a].[FormattedCarWin] 				   				    
		WHERE [a].[SaleDate] BETWEEN '2005-01-01' AND '2015-01-01'	
			AND  a.carSaleCountryId = 5

вы попробуйте так, доложите о результатах, я пока читаю про статистику, может, ему надо ее так подсобрать,
чтобы сам догадался
16 апр 15, 12:10    [17522832]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по производительности  [new]
loik
Guest
o-o
loik,
давайте ему насильно индекс пропишем:
SELECT [a].[carWin]  					  
			,[a].[carArticul]					
			,[a].[Survey_YMD]		
			,[a].[ManagerId]   				
			,[a].[SellerShopCode] 
			,[a].[BuyerShopCode] 		
			,[a].[BuyerName] 				
			,[a].[BuyerAddress]  
			,[a].[CreateUserId]  
			,[a].[CreateDate] 			
		FROM  Sales a with(nolock, index(IDX_FormattedCarWin))
			JOIN #TmpWins s
			ON [a].[FormattedCarWin] 				   				    
		WHERE [a].[SaleDate] BETWEEN '2005-01-01' AND '2015-01-01'	
			AND  a.carSaleCountryId = 5

вы попробуйте так, доложите о результатах, я пока читаю про статистику, может, ему надо ее так подсобрать,
чтобы сам догадался


индекс IDX_FormattedCarWin применился и по скорости нормально, как с табличной переменной.
но по временной таблице все равно применился TableScan. В случае с табличными переменными применился IndexSeek к табличной переменной, хотя индекс на временную таблицу создал
16 апр 15, 13:30    [17523607]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по производительности  [new]
o-o
Guest
loik,

в случае с табличной переменной тоже скан,
посмотрите свой последний план.
16 апр 15, 13:44    [17523750]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по производительности  [new]
loik
Guest
o-o
loik,

в случае с табличной переменной тоже скан,
посмотрите свой последний план.


да. просто с табличной переменной был индекс скан,
а с временной таблицей table скан
16 апр 15, 13:55    [17523849]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по производительности  [new]
o-o
Guest
loik,

скан там будет по-любому, мы же хотели получить Nested Loops, мы его и получили, временная таблица или переменная все равно будет "внешней", ее всю просматривать.
в случае переменной вы создали кластерный индекс, поэтому индекс скан, в случае таблицы вы создали некластерный индекс, если использовали просто create index, тк по умолчанию создается некластерный, поэтому идет скан таблицы, она же в результате меньше индекса, он тут и не нужен, мы же хотели, чтобы он подцеплял индекс на основной таблице, а не хэши считал на 93 млн. строк.

вроде даже и collate ни при чем, вы же им приводили к нужному строки во временной таблице, а не наоборот
16 апр 15, 15:11    [17524673]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по производительности  [new]
loik
Guest
o-o
loik,

скан там будет по-любому, мы же хотели получить Nested Loops, мы его и получили, временная таблица или переменная все равно будет "внешней", ее всю просматривать.
в случае переменной вы создали кластерный индекс, поэтому индекс скан, в случае таблицы вы создали некластерный индекс, если использовали просто create index, тк по умолчанию создается некластерный, поэтому идет скан таблицы, она же в результате меньше индекса, он тут и не нужен, мы же хотели, чтобы он подцеплял индекс на основной таблице, а не хэши считал на 93 млн. строк.

вроде даже и collate ни при чем, вы же им приводили к нужному строки во временной таблице, а не наоборот


т.е. дело в статистике, но что именно не так непонятно?
16 апр 15, 15:19    [17524729]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 [2]      все
Все форумы / Microsoft SQL Server Ответить