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

Есть индекс

CREATE NONCLUSTERED INDEX IX_Index_1 on dbo.TableOne ( Active, field_Ref, field_Code ) INCLUDE ( Occur, RecordRef, RecordHref)


При запросе следующего типа
select
field_Code, RecordRef, RecordHref
from dbo.TableOne
where Active = 0x00


Происходит операция INDEX SEEK. Все логично.
Почему, если менять условие на

where field_Ref = 0x80540016357FEE4511DF6309019FA762


Происходит INDEX SCAN ?
23 мар 12, 11:51    [12300721]     Ответить | Цитировать Сообщить модератору
 Re: Index Seek vs Index Scan  [new]
Glory
Member

Откуда:
Сообщений: 104751
Active имеет тип bit что ли ?
23 мар 12, 11:53    [12300749]     Ответить | Цитировать Сообщить модератору
 Re: Index Seek vs Index Scan  [new]
tpg
Member

Откуда: Novosibirsk
Сообщений: 23902
Ну, дык, статистика однако такая... что дешевле просканить, чем поискать.
23 мар 12, 11:53    [12300753]     Ответить | Цитировать Сообщить модератору
 Re: Index Seek vs Index Scan  [new]
фыфывфывфы
Guest
Glory,

Нет, binary
23 мар 12, 11:55    [12300763]     Ответить | Цитировать Сообщить модератору
 Re: Index Seek vs Index Scan  [new]
Glory
Member

Откуда:
Сообщений: 104751
фыфывфывфы
Нет, binary

Что вот каждый параметер поля вытягивать клещами ?
И планы тоже ?
23 мар 12, 11:57    [12300781]     Ответить | Цитировать Сообщить модератору
 Re: Index Seek vs Index Scan  [new]
iap
Member

Откуда: Москва
Сообщений: 47144
фыфывфывфы
Господа,
подскажите пож-та, никак не пойму почему так происходит

Есть индекс

CREATE NONCLUSTERED INDEX IX_Index_1 on dbo.TableOne ( Active, field_Ref, field_Code ) INCLUDE ( Occur, RecordRef, RecordHref)


При запросе следующего типа
select
field_Code, RecordRef, RecordHref
from dbo.TableOne
where Active = 0x00


Происходит операция INDEX SEEK. Все логично.
Почему, если менять условие на

where field_Ref = 0x80540016357FEE4511DF6309019FA762


Происходит INDEX SCAN ?
Если не используется первое поле составного индекса, то и весь индекс не используется.
При таком индексе надо обязательно наложить ещё и ограничение на Active.
Причём, если не ошибаюсь, годится только проверка первого поля на равенство/неравенство
23 мар 12, 11:57    [12300789]     Ответить | Цитировать Сообщить модератору
 Re: Index Seek vs Index Scan  [new]
Ivan Durak
Member

Откуда: Minsk!!!
Сообщений: 3754
Все логично. Нарисуйте на бумажке пример дерева индекса хотябы с 2-мя полями и попробуйте поискать только по второму полю!!!!
23 мар 12, 12:11    [12300916]     Ответить | Цитировать Сообщить модератору
 Re: Index Seek vs Index Scan  [new]
Ray D
Member

Откуда: from the middle of nowhere
Сообщений: 3598
Блог
iap
При таком индексе надо обязательно наложить ещё и ограничение на Active.
Причём, если не ошибаюсь, годится только проверка первого поля на равенство/неравенство

На равенство -- да. На неравенство -- может быть преобразовано в > or <, и тогда seek будет только по первому полю.
23 мар 12, 12:19    [12300960]     Ответить | Цитировать Сообщить модератору
 Re: Index Seek vs Index Scan  [new]
iap
Member

Откуда: Москва
Сообщений: 47144
Ray D
iap
При таком индексе надо обязательно наложить ещё и ограничение на Active.
Причём, если не ошибаюсь, годится только проверка первого поля на равенство/неравенство

На равенство -- да. На неравенство -- может быть преобразовано в > or <, и тогда seek будет только по первому полю.
Значит, ошибаюсь
23 мар 12, 12:21    [12300976]     Ответить | Цитировать Сообщить модератору
 Re: Index Seek vs Index Scan  [new]
Slava_Nik
Member

Откуда: из России
Сообщений: 901
Ivan Durak
Все логично. Нарисуйте на бумажке пример дерева индекса хотябы с 2-мя полями и попробуйте поискать только по второму полю!!!!

я вот тоже не понял вопрос ТС, хочет использование одного индекса на два разных запроса?!
23 мар 12, 12:22    [12300981]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить