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

Откуда:
Сообщений: 19
Приветствую!

Есть таблица, в ней ~ 400,000 записей.
Есть поле 'name' - строковое.
Выполняется запрос, в котором есть такая часть:
and name not like 'hello%' and name not like 'ffff%' and name ...

Эта конструкция УЖАСНО тормозит весь запрос. Как можно решить
задачу выделения записей по значения в поле 'name' ???
25 ноя 04, 18:14    [1136494]     Ответить | Цитировать Сообщить модератору
 Re: Оптимизация запроса  [new]
Crimean
Member

Откуда:
Сообщений: 13148
Можно посмотреть в сторону MS Search...
25 ноя 04, 18:32    [1136568]     Ответить | Цитировать Сообщить модератору
 Re: Оптимизация запроса  [new]
Smirnov Anton
Member

Откуда: Н.Новгород
Сообщений: 3220
а можно полную строку where?
25 ноя 04, 18:42    [1136600]     Ответить | Цитировать Сообщить модератору
 Re: Оптимизация запроса  [new]
tpg
Member

Откуда: Novosibirsk
Сообщений: 23902
slyfox
Есть таблица, в ней ~ 400,000 записей.
Есть поле 'name' - строковое.
Выполняется запрос, в котором есть такая часть:
and name not like 'hello%' and name not like 'ffff%' and name ...

Эта конструкция УЖАСНО тормозит весь запрос. Как можно решить
задачу выделения записей по значения в поле 'name' ???
Что-то тут не так... Если индекс по этой колонке есть и Like идет с процентом только в конце строки шаблона, то он тормозить не должен, будет искать по индексу. А вот если процентами обложить строку с обеих сторон, тогда - да, будет полный скан.
26 ноя 04, 07:15    [1137167]     Ответить | Цитировать Сообщить модератору
 Re: Оптимизация запроса  [new]
x
Guest
not and not
по любому тяжелая конструкция
26 ноя 04, 10:17    [1137572]     Ответить | Цитировать Сообщить модератору
 Re: Оптимизация запроса  [new]
Пакостник
Guest
А индексировать по данному полю не пробовали?
Вообще конструкция может быть и сложная, но и таблица не ахти какая большая.
26 ноя 04, 11:02    [1137795]     Ответить | Цитировать Сообщить модератору
 Re: Оптимизация запроса  [new]
aleksey_fomchenko
Member

Откуда: Москва
Сообщений: 1014
А сколько выполняется запрос без выгребания строк на клиента?
Так как похоже, что он вам будет возвращат большую часть таблицы.
not like 'hello%' это же означает like ве остальное!
Может именно в выгребании на клиента тормоза?
26 ноя 04, 11:34    [1138001]     Ответить | Цитировать Сообщить модератору
 Re: Оптимизация запроса  [new]
AlTk
Member

Откуда: Волгоград
Сообщений: 124
а попробуйте not (like ''hello%' or like 'ffff%').
может изменится чего?
26 ноя 04, 11:46    [1138061]     Ответить | Цитировать Сообщить модератору
 Re: Оптимизация запроса  [new]
Diaflex
Member

Откуда: Москва
Сообщений: 9
При выполнении not like производится Index Scan в отличии от like (здесь позиционирование производится по Index Seek).
Решение: используя like начитать во временную таблицу id записей которые не следует удалять, затем удалить из основной таблицы которых нет во временной. По полю name конечно нужен индекс...
26 ноя 04, 18:27    [1140208]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить