У меня есть основной вопрос об индексе сканирования/поиска. Индексная развертка эффективна при большом количестве строк. То есть стоимость сканирования индекса обратно пропорциональна количеству возвращаемых строк. Это меньше количества строк, которые дороже, чем запрос, так как он должен сканировать все страницы, что приводит к большему количеству ввода-вывода.Почему поиск индекса становится дороже, чем сканирование индекса
Я искал причину, по которой искатели стали дороже, чем сканы, но я не могу получить причину, по которой поиск становится дорогим.
То, что я смущен, - это поиск индекса. Почему поиск индекса становится дорогим с большим количеством возвращаемых строк. Поиск индекса всегда будет быстрее и эффективнее, чем сканирование, поскольку оно непосредственно касается страниц, содержащих строки. Таким образом, даже при большом количестве строк возвращаемый индексный поиск всегда должен быть эффективнее индекса. Но этого не происходит. Я хочу точно знать, почему в какой-то момент поиск становится дорогим.
select id,name,col1,col2
from TableA -- Will result in index scan. Table has 10000 rows with clustered index on ID column. Query has covering index.
select id,name,col1,col2
where ID between 1 and 10
from TableA -- Optimizer Will use index Seek.
Теперь почему ниже запрос становится дорогим, когда индекс стремятся навяжут -
select id,name,col1,col2
from TableA with (forceseek)
может быть [это] (http://blog.sqlauthority.com/2007/03/30/sql-server-index-seek-vs-index-scan-table-scan/) помогает !!! – Praveen
Квалификационные накладные расходы могут быть причиной – Ian
Что содержится в индексе? Только идентификатор? Является ли это кластеризованным индексом? Если нет, то ключевой поиск, необходимый для получения других столбцов, станет причиной удара производительности. – strickt01