Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Microsoft SQL Server |
![]() ![]() |
Kudep Member Откуда: From Russia Сообщений: 146 |
Смотрю статистику по используемым индексам. Для одного nonclustered index кол-во сканирований достаточно большое. Вопрос, по какой причине вообще может появляться nonclustered index scan? Не припомню, чтобы видел такой элемент в планах выполнения? Кластерный индекс на таблице есть. |
14 авг 12, 14:25 [13009163] Ответить | Цитировать Сообщить модератору |
tpg Member Откуда: Novosibirsk Сообщений: 23902 |
Значит серверу достаточно данных из этого nonclustered индекса для выбраной стратегии построения плана выполнения. |
14 авг 12, 14:31 [13009207] Ответить | Цитировать Сообщить модератору |
Гавриленко Сергей Алексеевич Member Откуда: Moscow Сообщений: 37155 |
Может быть вызван примерно теми же причинам, что и clustered index scan. |
14 авг 12, 14:31 [13009209] Ответить | Цитировать Сообщить модератору |
Kudep Member Откуда: From Russia Сообщений: 146 |
Хорошо, переформулирую вопрос. Какие изменения необходимо применить к таблице, чтобы вместо nonclustered index scan сиквел сервер стал производить nonclustered index seek. Если предположить, что nonclustered index scan он выбрал потому, что в индексе есть все необходимые поля, однако те по которым идет поиск лежат в Included, то в этом случае достаточно перенести недостающие поля из Included в собственно индекс, верно? |
||
14 авг 12, 14:37 [13009270] Ответить | Цитировать Сообщить модератору |
Гавриленко Сергей Алексеевич Member Откуда: Moscow Сообщений: 37155 |
|
||
14 авг 12, 14:38 [13009283] Ответить | Цитировать Сообщить модератору |
nicescar Member Откуда: Сообщений: 94 |
Именно |
||
14 авг 12, 14:38 [13009285] Ответить | Цитировать Сообщить модератору |
по какой причине вообще
Guest |
Kudep, давайте вы немного отвлечетесь от nonclustered/clustered и в том же режиме порассуждаете про что такое scan и что такое seek. |
14 авг 12, 14:40 [13009305] Ответить | Цитировать Сообщить модератору |
Kudep Member Откуда: From Russia Сообщений: 146 |
причем здесь селективность? Если создать индекс с очень низкой селективностью, например, по полю bit, который в лучшем случае будет возвращать половину записей, и далее сделать выборку по этому полю, то мы все-равно получим nonclustered index seek. Т.е. скана все-равно не будет. И это при том, что данный пример совершенно утрированный. В реальности селективность всё же на порядок выше. |
||||
14 авг 12, 14:50 [13009382] Ответить | Цитировать Сообщить модератору |
tpg Member Откуда: Novosibirsk Сообщений: 23902 |
А актуальное число строк от ожидаемого сильно отличается? |
14 авг 12, 14:55 [13009450] Ответить | Цитировать Сообщить модератору |
Kudep Member Откуда: From Russia Сообщений: 146 |
сори, не понял, какое число строк? |
||
14 авг 12, 15:23 [13009755] Ответить | Цитировать Сообщить модератору |
Гавриленко Сергей Алексеевич Member Откуда: Moscow Сообщений: 37155 |
if object_id('tempdb..#t') is not null drop table #t create table #t ( id int not null identity primary key clustered , flag bit not null ) create index IX__t on #t ( flag ) insert #t ( flag ) select 1 union all select 0 union all select 0 select * from #t a where a.flag like '%1%' |
||||
14 авг 12, 15:42 [13009914] Ответить | Цитировать Сообщить модератору |
tpg Member Откуда: Novosibirsk Сообщений: 23902 |
|
||||
15 авг 12, 06:29 [13012593] Ответить | Цитировать Сообщить модератору |
Все форумы / Microsoft SQL Server | ![]() |