0
brznzglwgn
30.09.15
✎
11:03
|
Здравствуйте,
Описание:
Допустим есть РегистрНакопления ОстаткиТоваров с измерениями:
Склад
Характеристика
Товар
Выполняется запрос
ВЫБРАТЬ
ОстаткиТоваровОстатки.Склад,
ОстаткиТоваровОстатки.Товар,
ОстаткиТоваровОстатки.КоличествоОстаток
ИЗ
РегистрНакопления.ОстаткиТоваров.Остатки(
,
Склад = &Склад
И Товар = &Товар) КАК ОстаткиТоваровОстатки
Как известно в плане будет Clustered Index Seek по Складу и дальнейшее сканирование по Товару. Для исправления этой "неоптимальности" можно подвинуть Товар наверх выше Характеристики, пропусков в индексе не будет. Будет только поиск. Все хорошо, все понятно.
Теперь - а что будет, если проиндексировать Товар? Создастся индекс по Период+Товар. В теории в плане (при должной селективности Товара) должен бы быть IndexSek по товару и далее ClusteredIndexSeek уже по складу.
Однако, в плане по факту вижу IndexSeek с последующим KeyLookup. Никаких сканов, то есть в картинке IndexSeek'a (по товару!) как будто выбирается склад. В текстовом плане также никаки[ WHERE.
На мой взгляд это не логично, ведь в индексе по товару нет никаких данных по складу.
А что Вы думаете?
|
|