2014-12-15 3 views
0

У меня есть база данных среднего размера с объемом около 100 ГБ, она содержит основную таблицу и несколько внешних таблиц. У меня мало индексов на этой основной таблице.Индекс SQL Server с несколькими значениями

Мой вопрос в том, что один из столбцов, которые я использую в предложении WHERE, может содержать только 8 значений, от 0 до 7, поскольку значений мало, эффективно ли создать индекс для этого столбца или просто потерять память ?

Спасибо.

+0

Если в распределении 8 значений нет большого перекоса, вам, вероятно, лучше искать в другом месте. Какие РСУБД? – StuartLC

+0

Как и в случае с индексами, это зависит от того, как вы используете таблицу. Казалось бы, нет неотъемлемой причины не индексировать, но без дополнительной информации трудно быть уверенным. – Andrew

+0

Хорошо, в основном я использую множество индексов для поиска моих данных, таких как время данных, stc .., но я использую этот столбец в основном для предложения GROUP BY и WHERE. для 8 значений обычно используются 4 значения, другие - редко. – Abed

ответ

0

Если у вас большой стол (много строк), то сужение поиска до одной восьмой строк - это то, что стоит делать. То, что улучшит это, - это еще одно поле, которое может сузить его еще дальше. Так что если ваш пункт where имеет where Field1 = 4 and Field2 = x, то создание индекса с полями Field1 и Field2 поможет. Даже если Field2 также имеет только 8 значений, теперь вы сузили поиск до шестидесяти четвертой таблицы (предполагая, конечно, что каждое значение происходит примерно с той же вероятностью).

В вашем случае это предположение, похоже, не удерживается, по крайней мере, для поля 1, но это все равно будет 4 * 8 = 32 сегмента для поиска вместо одного.

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

Это общие ответы, но без дополнительных деталей, что о всех, что мы можем вам дать.

Смежные вопросы