Общее правило гласит, что если у вас очень большая таблица (более 1 миллиона строк), вы должны использовать индекс только в том случае, если предложение WHERE, основанное на этом индексе, выбирает самое большее что-то в окрестности 1-2%. данных.
Если у вас есть столбец «пол» и примерно 50% значений - «мужской» и примерно 50% - «женский», то наличие индекса, который на самом деле вам мало, - SQL Server и большинство других СУБД будут Скорее всего, в этом случае все еще выполняется полное сканирование таблицы, поскольку в среднем им все равно придется сканировать по крайней мере половину таблицы, поэтому «обходной» путь сначала с использованием индекса, а затем поиск фактических полных данных на основе этого значение индекса просто не стоит.
Индекс отлично подходит, если у вас есть что-то вроде уникальных ключей (номер клиента) или достаточно выборочное значение. Индекс не обходится без затрат - он использует дисковое пространство, его необходимо обслуживать, он немного замедлит все операции, кроме SELECT - поэтому внимательно следите, это не лучшая идея просто вслепую индексировать все , Иметь слишком мало индексов - это плохо, но иметь слишком много и неправильных может быть еще хуже! :-) Никто и никогда не утверждал, что правильно определить ваши показатели было легко ....: -)
Но определенно есть какая-то помощь - лучший источник, который я знаю, это превосходные сообщения в блоге Кимберли Триппа по индексированию SQL Server (и многие другие темы).
Марк