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

Откуда:
Сообщений: 23
Добрый день!

есть база в MSSQL

supplier nvarchar(16)
code nvarchar(32)
note nvarchar(256)
quan int
price float



800 тыс. строк

иноой раз необходимо сделать такой запрос

SELECT * FROM storage 
WHERE  
code like '%44018S30C00%' 
or code like '%44018SM4A02%' 
or code like '%44018S30C01%' 
or code like '%44018SM4A00%' 
or code like '%44018SM4A01%'
or code like '%44018S0AJ01%' 
or code like '%44018S0AJ02%' 
or code like '%44018S0AJ00%' 
or code like '%MB0SV9004MC%' 
order by code 


время поиска от 20 до 50 секунд.

Подскажите, плз, как быть в такой ситуации?

Модератор: Тема перенесена из форума "Проектирование БД".


Сообщение было отредактировано: 21 мар 12, 13:37
21 мар 12, 13:31    [12287638]     Ответить | Цитировать Сообщить модератору
 Re: Помогите оптимизировать запрос  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
Hunterex
Подскажите, плз, как быть в такой ситуации?
Нормализовать данные.
21 мар 12, 13:41    [12287765]     Ответить | Цитировать Сообщить модератору
 Re: Помогите оптимизировать запрос  [new]
step_ks
Member

Откуда:
Сообщений: 936
https://www.sql.ru/forum/actualthread.aspx?tid=863328
21 мар 12, 13:46    [12287822]     Ответить | Цитировать Сообщить модератору
 Re: Помогите оптимизировать запрос  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
Сегодня день списков LIKE
21 мар 12, 13:52    [12287896]     Ответить | Цитировать Сообщить модератору
 Re: Помогите оптимизировать запрос  [new]
Hunterex
Member

Откуда:
Сообщений: 23
Гавриленко Сергей Алексеевич
Hunterex
Подскажите, плз, как быть в такой ситуации?
Нормализовать данные.


Да при чем тут нормализация?
Таблица простейшая!
21 мар 12, 14:22    [12288193]     Ответить | Цитировать Сообщить модератору
 Re: Помогите оптимизировать запрос  [new]
Glory
Member

Откуда:
Сообщений: 104751
Hunterex
Да при чем тут нормализация?
Таблица простейшая!

Нормализация - это вовсе не упрощение. Скорее наоборот
21 мар 12, 14:24    [12288211]     Ответить | Цитировать Сообщить модератору
 Re: Помогите оптимизировать запрос  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
Hunterex
Да при чем тут нормализация?
Таблица простейшая!
Да все при том же. У вас вообще первая нормальная форма нарушается.
21 мар 12, 14:43    [12288435]     Ответить | Цитировать Сообщить модератору
 Re: Помогите оптимизировать запрос  [new]
Hunterex
Member

Откуда:
Сообщений: 23
Гавриленко Сергей Алексеевич
Hunterex
Да при чем тут нормализация?
Таблица простейшая!
Да все при том же. У вас вообще первая нормальная форма нарушается.


Согласен.
Но у меня по-другому нельзя.
Таблица динамическая. Данные меняются ежедневно, не всегда есть однозначное соответствие полей....
ну вобщм пробовал. Нормализовать не получается (исходя из условий задачи).
21 мар 12, 15:20    [12288855]     Ответить | Цитировать Сообщить модератору
 Re: Помогите оптимизировать запрос  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
Hunterex
Согласен.
Но у меня по-другому нельзя.
Таблица динамическая. Данные меняются ежедневно, не всегда есть однозначное соответствие полей....
ну вобщм пробовал. Нормализовать не получается (исходя из условий задачи).
Заведите еще одну таблицу и поддерживайте триггером.
21 мар 12, 15:24    [12288895]     Ответить | Цитировать Сообщить модератору
 Re: Помогите оптимизировать запрос  [new]
Hunterex
Member

Откуда:
Сообщений: 23
Гавриленко Сергей Алексеевич
Hunterex
Согласен.
Но у меня по-другому нельзя.
Таблица динамическая. Данные меняются ежедневно, не всегда есть однозначное соответствие полей....
ну вобщм пробовал. Нормализовать не получается (исходя из условий задачи).
Заведите еще одну таблицу и поддерживайте триггером.


Думаю этим вопрос не решить.
У меня потому и запрос такой, что приходится иметь дело с такой таблицей.
У таблицы есть поле, в котором надо по вхождению отыскать все номера из списка.
На 3-4 номерах работает. Но иной раз выстреливает список из 5-12 номеров.

Тут посоветовали выделять корень слова и искать по нему. Т.о. уменьшить список.
Наверное так и придется делать.
21 мар 12, 16:01    [12289251]     Ответить | Цитировать Сообщить модератору
 Re: Помогите оптимизировать запрос  [new]
Glory
Member

Откуда:
Сообщений: 104751
Hunterex
Тут посоветовали выделять корень слова и искать по нему. Т.о. уменьшить список.
Наверное так и придется делать

Так это и будет нормализация
21 мар 12, 16:02    [12289262]     Ответить | Цитировать Сообщить модератору
 Re: Помогите оптимизировать запрос  [new]
Hunterex
Member

Откуда:
Сообщений: 23
Glory
Hunterex
Тут посоветовали выделять корень слова и искать по нему. Т.о. уменьшить список.
Наверное так и придется делать

Так это и будет нормализация


Разве?
Таблица останется как есть. Я просто в проге буду формировать запрос.
21 мар 12, 19:32    [12290958]     Ответить | Цитировать Сообщить модератору
 Re: Помогите оптимизировать запрос  [new]
Mind
Member

Откуда: Лучший город на Земле
Сообщений: 2322
Hunterex
Glory
пропущено...

Так это и будет нормализация


Разве?
Таблица останется как есть. Я просто в проге буду формировать запрос.

сделайте XML поле вместо code nvarchar(32), ну и индекс по нему, может будет быстрее.
А вообще да, как уже сказали, нормализация вас спасет.
21 мар 12, 23:53    [12292120]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить