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

Откуда:
Сообщений: 82
Есть примитивная таблица (объект справочник базы 1С), делаю примитивный запрос

SELECT
T1._IDRRef
FROM _Reference45 T1 WITH(NOLOCK)


По полю _IDRRef есть кластерный индекс с одним этим полем, но в плане запроса вместо Clustered Index Scan, получаю простой Index Scan по индексу _Referenc45_Descr_SR который состоит из 2х полей _Description и _IDRRef.

Саму база, план и текст запроса можно скачать здесь: https://yadi.sk/d/sTl6H7vZctTZm

Подскажите пожалуйста, почему оптимизатор не выбирает план со сканированием кластерного индекса, а вместо этого использует обычный индекс?
23 ноя 14, 23:53    [16893805]     Ответить | Цитировать Сообщить модератору
 Re: Index Scan вместо Clustered Index Scan почему?  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37051
Андрей_Батькович
Подскажите пожалуйста, почему оптимизатор не выбирает план со сканированием кластерного индекса, а вместо этого использует обычный индекс?
Потому что оптимизатор в курсе, что кластерный индекс -- это и есть вся таблица целиком, а в некластерном -- всего два поля.

Сообщение было отредактировано: 24 ноя 14, 00:52
24 ноя 14, 00:50    [16894013]     Ответить | Цитировать Сообщить модератору
 Re: Index Scan вместо Clustered Index Scan почему?  [new]
Андрей_Батькович
Member

Откуда:
Сообщений: 82
Гавриленко Сергей Алексеевич,

Т.е. сканирование кластерного индекса (даже если у него одно поле) будет медленнее чем сканирование обыкновенного который состоит из 2х полей?
24 ноя 14, 02:08    [16894105]     Ответить | Цитировать Сообщить модератору
 Re: Index Scan вместо Clustered Index Scan почему?  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37051
Андрей_Батькович
Гавриленко Сергей Алексеевич,

Т.е. сканирование кластерного индекса (даже если у него одно поле) будет медленнее чем сканирование обыкновенного который состоит из 2х полей?
Сканирование кластерного индекса, в котором всегда есть все поля таблицы, будет медленнее, чем сканирование обыкновенного, который состоит из 2х полей. Вам пора почитать, что такое кластерные индекс.

Сообщение было отредактировано: 24 ноя 14, 02:50
24 ноя 14, 02:50    [16894136]     Ответить | Цитировать Сообщить модератору
 Re: Index Scan вместо Clustered Index Scan почему?  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7868
Андрей_Батькович,

с чего бы он был быстрее, если серверу нужно будет сделать больше чтений?
24 ноя 14, 11:06    [16895080]     Ответить | Цитировать Сообщить модератору
 Re: Index Scan вместо Clustered Index Scan почему?  [new]
Андрей_Батькович
Member

Откуда:
Сообщений: 82
Владислав Колосов,

Все понятно, спасибо. Тему можно закрывать.
24 ноя 14, 11:30    [16895249]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить