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

Откуда:
Сообщений: 274
CREATE
INDEX [StatMain5] ON StatMain ([CodeCo], [CodeCountry], [UnitAlt], [Date], [ImpExp], [CodeTNVD], [Qnty], [QntyAlt], [STFOBD])
WITH
DROP_EXISTING
ON [PRIMARY]

И запрос:
where
sc.RegionID = @RegionID and
(sm.[Date]
between
cast(@Date1 + '01 00:00' as datetime) and
cast(@Date2 + '01 00:00' as datetime))
and
(sm.ImpExp = @ImpExp) and
(substring(sm.CodeTnvd, 1, 4) = substring(@ProductCode, 1, 4))

1. Серьозно ли тормозит выборку substring???
2. Так же у меня сомнения, что возможно не совсем эффективно вставлен Date относительно данного составного индекса!!!
3. Как я понимаю количество потраченного времени на выполнения работы SQL можно в плане определить из Cost - если так то странно что самый большой cost и сложение всех остальных приводит к 1 сек - а выполняеться запрос около 8 - 13 сек!!! Неможет ли скорость большей частью зависеть от обьёма выдаваемых данных???
31 янв 05, 19:24    [1288718]     Ответить | Цитировать Сообщить модератору
 Re: Составной индекс и поиск с его помощью  [new]
Smirnov Anton
Member

Откуда: Н.Новгород
Сообщений: 3220
:-)
а вы в индекс не все поля внесли?
31 янв 05, 19:27    [1288723]     Ответить | Цитировать Сообщить модератору
 Re: Составной индекс и поиск с его помощью  [new]
TJ
Member

Откуда:
Сообщений: 274
Три из них не внёс!!!
Вы поймите не я его писал!!! Но нигде не могу найти информации про правильность написания составных индексов!!! Можно сказать чистая интуиция!!!
31 янв 05, 19:37    [1288750]     Ответить | Цитировать Сообщить модератору
 Re: Составной индекс и поиск с его помощью  [new]
BugsBunny
Member

Откуда: GMT+5=EST
Сообщений: 2414
TJ
Три из них не внёс!!!
Вы поймите не я его писал!!! Но нигде не могу найти информации про правильность написания составных индексов!!! Можно сказать чистая интуиция!!!


Smirnov Anton was kidding...
As per "правильность", syntax is correct but I'm affraid that "интуиция" has failed this time
31 янв 05, 20:05    [1288792]     Ответить | Цитировать Сообщить модератору
 Re: Составной индекс и поиск с его помощью  [new]
TJ
Member

Откуда:
Сообщений: 274
Чёрт с ним со в сем остальным что Вы думаете насчёт 3 пункта???
31 янв 05, 20:19    [1288805]     Ответить | Цитировать Сообщить модератору
 Re: Составной индекс и поиск с его помощью  [new]
BugsBunny
Member

Откуда: GMT+5=EST
Сообщений: 2414
TJ

...И запрос:
where
sc.RegionID = @RegionID and
(sm.[Date]
between
cast(@Date1 + '01 00:00' as datetime) and
cast(@Date2 + '01 00:00' as datetime))
and
(sm.ImpExp = @ImpExp) and
(substring(sm.CodeTnvd, 1, 4) = substring(@ProductCode, 1, 4))

1. Серьозно ли тормозит выборку substring???
2. Так же у меня сомнения, что возможно не совсем эффективно вставлен Date относительно данного составного индекса!!!
3. Как я понимаю количество потраченного времени на выполнения работы SQL можно в плане определить из Cost - если так то странно что самый большой cost и сложение всех остальных приводит к 1 сек - а выполняеться запрос около 8 - 13 сек!!! Неможет ли скорость большей частью зависеть от обьёма выдаваемых данных???

1. Any manipulation with indexed field kill possibility to use even correctly built index (not your case)
2. Indeed, never be used
3. Definitely but there is no big sense in absolute cost (100%). Cost only helps you to find relative bottlenecks
31 янв 05, 20:30    [1288817]     Ответить | Цитировать Сообщить модератору
 Re: Составной индекс и поиск с его помощью  [new]
AlexJuice
Member

Откуда: Не от мира сего
Сообщений: 1413
TJ
(substring(sm.CodeTnvd, 1, 4) = substring(@ProductCode, 1, 4))

1. Серьозно ли тормозит выборку substring???

Такой SUBSTRING - это же LEFT, а где LEFT, там и LIKE...
1 фев 05, 09:33    [1289322]     Ответить | Цитировать Сообщить модератору
 Re: Составной индекс и поиск с его помощью  [new]
pima
Member

Откуда: Москва
Сообщений: 496
Во-первых, Индексы. Теоретические основы.
Поехали дальше. Во-вторых, чем меньше длина 1 записи индекса, тем больше от него толку, т. е. тем выше производительность. Индекс с ТАКИМ числом полей сааавсем не нужен.
TJ
2. Так же у меня сомнения, что возможно не совсем эффективно вставлен Date относительно данного составного индекса!!!

В-третьих, составной индекс по полям (a, b, c) может быть использован только для доступа через
1) where a = ...
2) where a = ... and b = ...
3) where a = ... and b = ... and c = ...
Во всех остальных случаях оптимизатор выбирает сканирование таблицы (ну если нет других подходящих индексов). Т. е. индекс (a,b,c) по определению не может быть применен к запросу, где анализируется 2-е без 1-го или 3-е без остальных двух.
Ну и еще сильно подумайте, нужно ли вам индексировать эту таблицу, учитывая, что затраты на поддержку индекса при частых insert/update могут превысить выгоду от его использования при select. Может, и не нужен козе баян? ;-)
1 фев 05, 15:26    [1290972]     Ответить | Цитировать Сообщить модератору
 Re: Составной индекс и поиск с его помощью  [new]
Алексей2003
Member

Откуда: Москва
Сообщений: 5645
Во всех остальных случаях оптимизатор выбирает сканирование таблицы
если в запросе учавствуют только поля из этого составного индекса, оптимизатор может выбрать сканирование именно индекса а не таблицы.

для спящего время бодрствования равносильно сну
1 фев 05, 15:42    [1291049]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить