Не очень известный факт о кластерном индексе

Блог им. semenov
Казалось бы все уже давно разжевано, однако об одном интересном факте мало кто знает — если кластерный индекс уникальный, то при создании неуникальных некластерных индексов, ключ кластерного индекса будет не только на листовом уровне дерева, но и в промежуточных узлах. Об этом подробно написала Kalen Delaney в своем блоге: sqlblog.com/blogs/kalen_delaney/archive/2010/03/07/more-about-nonclustered-index-keys.aspx Не пересказывая г-жу Дилани, отмечу только, что это приводит к интересному эффекту — при наличии уникального кластерного индекса по полю X и неуникального некластерного индекса по полю Y, для запроса вида select… where Y = @param1 and X = @param2 при использовании некластерного индекса, index seek будет по обоим полям — Y, X, а не только по Y. Если же этот индекс сделать уникальным, то, как и ожидается, ключ кластерного индекса будет только на листовом уровне, и index seek будет только по Y.

0 комментариев

Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.