Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Оптимизировать время выполнения запроса  [new]
Lexx_SQL
Member

Откуда:
Сообщений: 566
Добрый день!
Необходимо оптимизировать время выполнения запроса.В таблицах есть первичные ключи, создал еще индексы, но не очень помогло. В плане запроса видно, что поиск в первичных ключах занимает достаточнно много времени (3-13%).
Изменять первичные ключи или можно сделать все как то через индексы...
С оптимизацией столкнулся впервые, подскажите, как реогранизовать базу или запрос для повышения быстродействия.
План запроса прилагаю.

К сообщению приложен файл (Plan.zip - 77Kb) cкачать
19 мар 15, 12:05    [17404432]     Ответить | Цитировать Сообщить модератору
 Re: Оптимизировать время выполнения запроса  [new]
virtuOS
Member

Откуда: большая деревня
Сообщений: 266
В плане запрос урезан. Но и так ясно, что надо менять структуру запроса. От аткого монстра ничего хорошего ждать не приходится.
select ...
,convert(int,(
			Select SUM(CASE S_Ostatok._RecordKind WHEN 0 THEN S_Ostatok._Fld7766 
												WHEN 1 THEN S_Ostatok._Fld7766*(-1) 
						END) 
			from UT30.dbo._AccumRg7760 As S_Ostatok 
			LEFT OUTER JOIN UT30.dbo._Reference62 AS S_Name 
				ON S_Ostatok._Fld7762RRef = S_Name._IDRRef 
			LEFT OUTER JOIN UT30.dbo._Reference80 AS S_Sklad  
				ON S_Ostatok._Fld7761RRef =S_Sklad._IDRRef 
			LEFT OUTER JOIN UT30.dbo._Reference99 AS S_Mnf  
				ON S_Name._Fld861RRef =S_Mnf._IDRRef 
			Where S_Name._Description=PriceGeneral.name 
				and PriceGeneral.PriceManufacturer=S_Mnf._Description  
				and ( S_Sklad._Description='Z' OR  S_Sklad._Description='Образцы на стеллаже' OR  S_Sklad._Description='Основной' OR  S_Sklad._Description='Поставщики 2010')
			)
			) as Ostatok
, ...

FROM PriceGeneral  
LEFT OUTER JOIN  Spr_Product 
	on Spr_Product.Name=PriceGeneral.Name 
		and Spr_Product.Manufacturer=PriceGeneral.PriceManufacturer  

where FlagActive='True' and FlagMain='True'  and (replace(replace(replace(replace(replace(replace(replace(replace(PriceGeneral.Name,' ',''),'.',''),',',''),'/',''),'\',''),'-',''),'_',''),'°','') like '%6006%' )  


UNION

...			
19 мар 15, 12:48    [17404721]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить