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

Откуда: Київ
Сообщений: 10428
Так работает полсекунды, в таблицах десятки млн записей, результат около 25000 записей.
В профайлере показывает около 200 тысяч Reads

	insert into #zp2 
	select xs.[id] as id from dbo.strings_catalog xp2
	inner join dbo.xproperties_string xs on xs.catalog_id=xp2.[id] and FREETEXT(xp2.*,N'kakadoo') 
	inner join dbo.xproperties x on xs.[id]=x.[id] 



Если добавляю еще один фильтр - работает секунд 20, и это при том, что в этой временной таблице 40 записей
В профайлере показывает около 900 тысяч Reads

	insert into #zp2 
	select xs.[id] as id from dbo.strings_catalog xp2
	inner join dbo.xproperties_string xs on xs.catalog_id=xp2.[id] and FREETEXT(xp2.*,N'kakadoo') 
	inner join dbo.xproperties x on xs.[id]=x.[id] 
	inner join #des d on x.descriptor_id=d.descriptor_id 


Как можно оптимизнуть выборку?
25 июн 14, 17:56    [16219119]     Ответить | Цитировать Сообщить модератору
 Re: Как оптимизировать такой Select?  [new]
Mikle83
Member

Откуда: Санкт-Петербург
Сообщений: 653
Winnipuh,

кто такой #des? Есть ли индекс на descriptor_id?
25 июн 14, 18:00    [16219150]     Ответить | Цитировать Сообщить модератору
 Re: Как оптимизировать такой Select?  [new]
Winnipuh
Member [заблокирован]

Откуда: Київ
Сообщений: 10428
Mikle83
Winnipuh,

кто такой #des? Есть ли индекс на descriptor_id?


временная таблица с одним полем, я заменил ею функцию, которая выдает таблицу, но сажает производительность.
Да, индекс есть на нем.
25 июн 14, 18:01    [16219159]     Ответить | Цитировать Сообщить модератору
 Re: Как оптимизировать такой Select?  [new]
Mikle83
Member

Откуда: Санкт-Петербург
Сообщений: 653
Winnipuh,
не видя данных и статистик - можно пожелать разбить на два запроса

insert into #zp2 
	select xs.[id] as id, x.descriptor_id from dbo.strings_catalog xp2
	inner join dbo.xproperties_string xs on xs.catalog_id=xp2.[id] and FREETEXT(xp2.*,N'kakadoo') 
	inner join dbo.xproperties x on xs.[id]=x.[id] 


insert into #zp3
        Select z.id from #zp2 z     
        	inner join #des d on z.descriptor_id=d.descriptor_id 
25 июн 14, 18:04    [16219176]     Ответить | Цитировать Сообщить модератору
 Re: Как оптимизировать такой Select?  [new]
Дедушка
Member

Откуда: Город трёх революций
Сообщений: 5114
скорее всего после добавления #des сервер меняет порядок и типы соединений
посмотрите планы
25 июн 14, 18:42    [16219389]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить