Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Выборка по первым 12 символам поля.  [new]
Guest04102011
Guest
Доброго времени суток! Задача возникла такая. Есть табличка с параметрами документов (около десятка млн. записей.).
Упрощенная структура (менять стр-ру данной таблицы не могу)-

CREATE TABLE DOC_PAR (DOC_ID int, PAR_ID int, PAR_value varchar(50)) 

кластерный индекс по DOC_ID, PAR_ID, индекс по PAR_value.

Есть функция, которая по заданному значению (12 знаков) ищет параметры с определенными кодами PAR_ID и значением.
Проблема в том, что параметр может содержать и 12 и 13 знаков, но сравнивать надо первые 12, приходится писать left(PAR_value, 12)=left(@barcode, 12), что резко увеличивает время работы. Как сделать правильнее и быстрее? Что посоветуете?

Microsoft SQL Server 2008 R2 (RTM) - 10.50.1600.1 (X64) Apr 2 2010 15:48:46
4 окт 11, 16:44    [11382996]     Ответить | Цитировать Сообщить модератору
 Re: Выборка по первым 12 символам поля.  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
Вычисляемои поле по left(PAR_value, 12) и индекс по PAR_ID + это поле.
4 окт 11, 16:45    [11383023]     Ответить | Цитировать Сообщить модератору
 Re: Выборка по первым 12 символам поля.  [new]
Guest04102011
Guest
Индексированная вьюха, с вычисляемым полем?
4 окт 11, 16:53    [11383094]     Ответить | Цитировать Сообщить модератору
 Re: Выборка по первым 12 символам поля.  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31956
Guest04102011
приходится писать left(PAR_value, 12)=left(@barcode, 12), что резко увеличивает время работы.
Кто это вас заставляет так писать???

PAR_value like left(@barcode, 12) + '%'
4 окт 11, 16:54    [11383100]     Ответить | Цитировать Сообщить модератору
 Re: Выборка по первым 12 символам поля.  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
Guest04102011
Индексированная вьюха, с вычисляемым полем?
Зачем сразу вьюха?

Кстати да, с лайком получше должно быть.
4 окт 11, 16:55    [11383114]     Ответить | Цитировать Сообщить модератору
 Re: Выборка по первым 12 символам поля.  [new]
Guest04102011
Guest
Гавриленко Сергей Алексеевич,

Попробую спасибо.
4 окт 11, 17:05    [11383225]     Ответить | Цитировать Сообщить модератору
 Re: Выборка по первым 12 символам поля.  [new]
Guest04102011
Guest
Спасибо огромное, решилась проблема. Век живи, век учись.... LIKE и правда быстрее.
5 окт 11, 09:09    [11385706]     Ответить | Цитировать Сообщить модератору
 Re: Выборка по первым 12 символам поля.  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
Guest04102011
Спасибо огромное, решилась проблема. Век живи, век учись.... LIKE и правда быстрее.
Только осторожнее: он быстрее, если поиск по самому началу строки (с первого символа).
Потому что сервер в этом случае умеет использовать индексы.
5 окт 11, 09:28    [11385761]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить