Если у вас большой стол (много строк), то сужение поиска до одной восьмой строк - это то, что стоит делать. То, что улучшит это, - это еще одно поле, которое может сузить его еще дальше. Так что если ваш пункт where
имеет where Field1 = 4 and Field2 = x
, то создание индекса с полями Field1 и Field2 поможет. Даже если Field2 также имеет только 8 значений, теперь вы сузили поиск до шестидесяти четвертой таблицы (предполагая, конечно, что каждое значение происходит примерно с той же вероятностью).
В вашем случае это предположение, похоже, не удерживается, по крайней мере, для поля 1, но это все равно будет 4 * 8 = 32 сегмента для поиска вместо одного.
Выполняйте временные тесты, чтобы сравнить фактические цифры. Это действительно единственный способ определить, насколько индекс улучшает производительность или даже фактически улучшает его.
Это общие ответы, но без дополнительных деталей, что о всех, что мы можем вам дать.
Если в распределении 8 значений нет большого перекоса, вам, вероятно, лучше искать в другом месте. Какие РСУБД? – StuartLC
Как и в случае с индексами, это зависит от того, как вы используете таблицу. Казалось бы, нет неотъемлемой причины не индексировать, но без дополнительной информации трудно быть уверенным. – Andrew
Хорошо, в основном я использую множество индексов для поиска моих данных, таких как время данных, stc .., но я использую этот столбец в основном для предложения GROUP BY и WHERE. для 8 значений обычно используются 4 значения, другие - редко. – Abed