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

Откуда:
Сообщений: 1197
Есть 2 таблицы.
В обеих есть поле ProductNumber.
Поле ProductNumber может быть длиной 20 или 25 символов, т.е. продукты 2 типов. Но в обеих случаях последние символы - контрольные. Поэтому может быть что в одной таблице имеем ProductNumber 20 символов, а в другой 19 символов и наоборот. Тоже самое с длиной в 25 символов
Пока сделал скалярную функцию, которая обрезает серийник в зависимости от длины 20 или 25.
И джойн идет не по полям, а по результатам функции
Как ускорить джойны?
29 окт 12, 09:52    [13388865]     Ответить | Цитировать Сообщить модератору
 Re: Как ускорить join?  [new]
trew
Member

Откуда: Москва
Сообщений: 2646
relief,

Наверно, добавить в таблицы вычисляемые столбцы и сделать по ним индексы.
29 окт 12, 10:02    [13388908]     Ответить | Цитировать Сообщить модератору
 Re: Как ускорить join?  [new]
relief
Member

Откуда:
Сообщений: 1197
trew
relief,

Наверно, добавить в таблицы вычисляемые столбцы и сделать по ним индексы.


Премного благодарен
29 окт 12, 10:09    [13388941]     Ответить | Цитировать Сообщить модератору
 Re: Как ускорить join?  [new]
relief
Member

Откуда:
Сообщений: 1197
trew
relief,

Наверно, добавить в таблицы вычисляемые столбцы и сделать по ним индексы.


всплыла проблемка.
индекс можно делать только если значения уникальные в вычисляемом столбце - так сервер говорит.
а у меня уникальность на основании 3 полей идет.
как еще можно ускорить запрос, а то поиск по вычисляемым столбцам идет крайне медленно
30 окт 12, 11:51    [13395510]     Ответить | Цитировать Сообщить модератору
 Re: Как ускорить join?  [new]
trew
Member

Откуда: Москва
Сообщений: 2646
relief,

CREATE NONCLUSTERED INDEX...
30 окт 12, 11:55    [13395543]     Ответить | Цитировать Сообщить модератору
 Re: Как ускорить join?  [new]
Ivan Durak
Member

Откуда: Minsk!!!
Сообщений: 3618
relief
Есть 2 таблицы.
В обеих есть поле ProductNumber.
Поле ProductNumber может быть длиной 20 или 25 символов, т.е. продукты 2 типов. Но в обеих случаях последние символы - контрольные. Поэтому может быть что в одной таблице имеем ProductNumber 20 символов, а в другой 19 символов и наоборот. Тоже самое с длиной в 25 символов
Пока сделал скалярную функцию, которая обрезает серийник в зависимости от длины 20 или 25.
И джойн идет не по полям, а по результатам функции
Как ускорить джойны?

еще можно контрольный символ сразу в отдельное поле вынести. Я думаю это тоже решит проблему
30 окт 12, 12:15    [13395664]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить