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

Откуда: ☭
Сообщений: 72914
Одна и та же таблица, один и тот же запрос, разные индексы, разные планы. Не понимаю, какой лучше.

select C.CatalogueID, C.ClassificatorID, C2.CatalogueID OwnerID, C2.BranchObject, c2.Name, c2.Abbr
from tblCatalogue C 
inner join tblCatalogue C2 on C2.LeftKey<C.LeftKey and C2.RightKey>C.RightKey 
where C2.Level = 2


К сообщению приложен файл. Размер - 21Kb
18 дек 13, 16:29    [15312562]     Ответить | Цитировать Сообщить модератору
 Re: Какой план выполнения предпочтительней?  [new]
sdet
Member

Откуда:
Сообщений: 463
Antonariy,

Оба плохие. Надо создавать covering index
18 дек 13, 16:41    [15312689]     Ответить | Цитировать Сообщить модератору
 Re: Какой план выполнения предпочтительней?  [new]
wizli
Member

Откуда: Minsk
Сообщений: 270
Antonariy,
В большинстве случаев одного плана мало для того, чтобы сказать какой план лучше, а какой хуже.
Выполни перед запуском запроса
set statistics io on
set statistics time on


И после
set statistics io off
set statistics time off


Эта информация поможет прояснить ситуацию.
18 дек 13, 16:46    [15312750]     Ответить | Цитировать Сообщить модератору
 Re: Какой план выполнения предпочтительней?  [new]
Antonariy
Member

Откуда: ☭
Сообщений: 72914
sdet
Antonariy,

Оба плохие. Надо создавать covering index
А они оба одинаково плохие или все же какой-то чуть лучше?

Про covering index впервые слышу, и даже тут на скуле тем мало. Каков он должен быть для этого запроса?
18 дек 13, 16:56    [15312841]     Ответить | Цитировать Сообщить модератору
 Re: Какой план выполнения предпочтительней?  [new]
Antonariy
Member

Откуда: ☭
Сообщений: 72914
wizli,

Какая эта? С этими строчками или без них, я не нашел отличий в отчетах. Если выделить иконку, в пропертях выводится подробная статистика, там тоже все одинаково. Могу предоставить цифры, только скажите какие.
18 дек 13, 17:03    [15312908]     Ответить | Цитировать Сообщить модератору
 Re: Какой план выполнения предпочтительней?  [new]
sdet
Member

Откуда:
Сообщений: 463
Antonariy,

Какие индексы созданы?
18 дек 13, 17:06    [15312926]     Ответить | Цитировать Сообщить модератору
 Re: Какой план выполнения предпочтительней?  [new]
sdet
Member

Откуда:
Сообщений: 463
Antonariy,
Сколько данных, сколько по времени выполняется?
18 дек 13, 17:10    [15312958]     Ответить | Цитировать Сообщить модератору
 Re: Какой план выполнения предпочтительней?  [new]
Antonariy
Member

Откуда: ☭
Сообщений: 72914
sdet
Antonariy,

Какие индексы созданы?
CatalogueID pk clustered
ClassificatorID asc
RefID asc

Это в первом плане. Во втором плане дополнительно были испробованы разные комбинации с LeftKey и RightKey, вместе и по отдельности, по возрастанию и убыванию, план получался один и тот же.
18 дек 13, 17:17    [15313007]     Ответить | Цитировать Сообщить модератору
 Re: Какой план выполнения предпочтительней?  [new]
Antonariy
Member

Откуда: ☭
Сообщений: 72914
sdet
Antonariy,
Сколько данных, сколько по времени выполняется?
Данных немного, 15к записей, конкретно этот запрос выполняется мгновенно и возвращает все 15к, но в таблице дерево, операции сравнения левого и правого ключей с самими собой или друг с другом нередки.
18 дек 13, 17:24    [15313056]     Ответить | Цитировать Сообщить модератору
 Re: Какой план выполнения предпочтительней?  [new]
Crimean
Member

Откуда:
Сообщений: 13148
а что вы хотите для фактического умножения таблички на себя же?
у вас дерево - используйте решения для оптимизации работы с деревом..
18 дек 13, 17:39    [15313118]     Ответить | Цитировать Сообщить модератору
 Re: Какой план выполнения предпочтительней?  [new]
wizli
Member

Откуда: Minsk
Сообщений: 270
Antonariy
wizli,

Какая эта? С этими строчками или без них, я не нашел отличий в отчетах. Если выделить иконку, в пропертях выводится подробная статистика, там тоже все одинаково. Могу предоставить цифры, только скажите какие.


посмотрите вкладку "Messages" после выполнения селектов с включенными инструкциями statistics
18 дек 13, 18:00    [15313211]     Ответить | Цитировать Сообщить модератору
 Re: Какой план выполнения предпочтительней?  [new]
MasterZiv
Member

Откуда: Питер
Сообщений: 34621
Antonariy
sdet
Antonariy,

Оба плохие. Надо создавать covering index
А они оба одинаково плохие или все же какой-то чуть лучше?

Про covering index впервые слышу, и даже тут на скуле тем мало. Каков он должен быть для этого запроса?



забудь про это.
это было сказано неподумавши.
18 дек 13, 20:00    [15313711]     Ответить | Цитировать Сообщить модератору
 Re: Какой план выполнения предпочтительней?  [new]
Antonariy
Member

Откуда: ☭
Сообщений: 72914
wizli
Antonariy
wizli,

Какая эта? С этими строчками или без них, я не нашел отличий в отчетах. Если выделить иконку, в пропертях выводится подробная статистика, там тоже все одинаково. Могу предоставить цифры, только скажите какие.


посмотрите вкладку "Messages" после выполнения селектов с включенными инструкциями statistics
О, теперь разницу заметил.
С индексом.
Время ЦП = 0 мс, затраченное время = 212 мс.

Без индекса.
Время ЦП = 78 мс, затраченное время = 233 мс.

Спасибо.

Но при наличии индекса вместе с планом выводится сообщение:
Отсутствует индекс (влияние 64.3037): create nonclustered index [...] on [...] ([LeftKey], [RightKey]) include (CatalogueID, ClassificatorID)
А при отсутствии нет. Как ее понимать?

Это не синтаксис ли создания того самого covering index с толстым намеком на?
19 дек 13, 14:00    [15317490]     Ответить | Цитировать Сообщить модератору
 Re: Какой план выполнения предпочтительней?  [new]
Мистер Хенки
Member

Откуда: канализация
Сообщений: 6615
Antonariy,

вам тут два индекса нужно
([LeftKey], [RightKey]) include ( ClassificatorID)
(Level) include (BranchObject,[LeftKey], [RightKey])

CatalogueID если кластерный, то не надо добавлять в included
19 дек 13, 14:26    [15317731]     Ответить | Цитировать Сообщить модератору
 Re: Какой план выполнения предпочтительней?  [new]
Antonariy
Member

Откуда: ☭
Сообщений: 72914
Мистер Хенки
Antonariy,

вам тут два индекса нужно
([LeftKey], [RightKey]) include ( ClassificatorID)
(Level) include (BranchObject,[LeftKey], [RightKey])

CatalogueID если кластерный, то не надо добавлять в included
Кажется я уловил принцип, спасибо.
19 дек 13, 15:03    [15318087]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить