Нет индексов на маленьких столах? - PullRequest
29 голосов
/ 31 октября 2008

«Мы должны забыть о малой эффективности, скажем, в 97% случаев: преждевременная оптимизация - корень всех зол» (Дональд Кнут). Мои таблицы SQL вряд ли содержат более нескольких тысяч строк каждая (и это большие!). Помощник по настройке ядра СУБД SQL Server отклоняет объем данных как несущественный. Так что я даже не должен думать о том, чтобы поместить в эти таблицы явные индексы. Правильно?

Ответы [ 13 ]

0 голосов
/ 30 октября 2009

Вы должны понимать, что на основании запроса можно выполнить два поиска: один в индексе для получения указателя на строку, а затем непосредственно на саму строку. Если запрашиваемые данные находятся в столбцах индекса, этот дополнительный шаг может не потребоваться.

Вполне возможно, что двойное погружение для данных может быть медленнее, даже если оптимизатор идет после индекса. Независимо от того, заботимся мы о том, зависит ли профилирование приложения и возможные планы объяснения.

0 голосов
/ 31 октября 2008

Даже если у вас есть индекс, SQL Server может даже не использовать его, в зависимости от статистики для этой таблицы. И если вы планируете добавить индекс для отчета, который будет выполняться не чаще пары раз в год, помните, что штраф INSERT / UPDATE за добавление индекса будет действовать ВСЕ ВРЕМЯ. Прежде чем добавлять индекс, спросите себя, стоит ли он снижения производительности.

0 голосов
/ 31 октября 2008

Я полагаю, что есть автоматическая индексация по первичному ключу таблицы, что должно быть достаточно при запросе к таблице с меньшим количеством данных.

Итак, да, явных индексов можно избежать в случае небольшого набора данных, над которым нужно работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...