Наиболее важным соображением для создания индекса является поиск по этому полю, поэтому тип данных не имеет значения.
Теперь, когда более четкие значения более эффективны, это индекс, потому что вы быстрее отбрасываете строки. Если большинство строк одинаковы индекс будет таким же, как FULL SCAN
Так что если у вас есть querys как
SELECT * FROM Table WHERE fieldA = Value;
SELECT * FROM Table WHERE fieldB = Value;
Вы хотите два индекса, по одному для каждого поля
Но если вы есть querys как
SELECT * FROM Table WHERE fieldA = Value
AND fieldB = Value;
Вы хотите Composte индекс с обоих полей (FieldA, FieldB)
Последний наконечник, если вы хотите вернуть одно значение на ваш выбор
SELECT fieldB FROM Table WHERE fieldA = Value;
Вы также хотите, композитный индекс, потому что вы будете искать индекс для значения и не должны сделать поиск на столе, чтобы получить значение fieldB
потому что уже по индексу.
Теория? Используются теги dbms. – jarlh
, если вы часто используете оба этих столбца для соединения и т. Д., То оба :) – Robert
Я думаю, что это больше связано с тем, как часто вы ссылаетесь на столбцы в членстве join или where, и меньше связаны с мощностью уникальных значений. Мощность может помочь решить, какой тип индекса (т. Е. Растровое изображение vs btree) использовать, но не использовать его или нет. – Hambone