Один столбец BIT
, как правило, недостаточно избирателен, чтобы его можно было рассматривать даже для использования в индексе. Таким образом, индекс для одного столбца BIT на самом деле не имеет смысла - в среднем вам всегда придется искать около половины записей в таблице (селективность 50%), и поэтому оптимизатор запросов SQL Server вместо этого будет использовать сканирование таблицы. .
Если вы создадите один индекс для всех 15 bit
столбцов, у вас не возникнет этой проблемы - поскольку у вас есть 15 вариантов да / нет, ваш индекс станет довольно избирательным.
Проблема в том, что последовательность битовых столбцов важна. Ваш индекс будет только когда-либо , если ваш SQL-оператор использует хотя бы 1-n из самых левых BIT
столбцов.
Так что, если ваш индекс включен
Col1,Col2,Col3,....,Col14,Col15
тогда это может быть использовано для запроса, который использует
Col1
Col1
и Col2
Col1
и Col2
и Col3
....
и так далее. Но его нельзя использовать для запроса, который задает Col6,Col9
и Col14
.
Из-за этого я не думаю, что индекс вашей коллекции из BIT
столбцов действительно имеет большой смысл.
Являются ли эти 15 BIT
столбцы единственными столбцами, которые вы используете для запросов? Если нет, я бы попытался объединить те столбцы BIT, которые вы используете чаще всего для выбора, с другими столбцами, например, иметь индекс на Name
и Col7
или что-то еще (тогда ваши столбцы BIT
могут добавить дополнительную селективность к другому индексу)