Имеет ли смысл индексировать строковое поле в таблице с несколькими строками - PullRequest
2 голосов
/ 22 ноября 2011
create table foo (id, name varchar(255), value varchar(255));

Имеет ли смысл индексировать name поле в таблице foo, которая состоит только из 25 строк, где большинство запросов похоже на select * from foo where name = 'name1';, и ни одна из этих вещей не сильно меняется.

Ответы [ 3 ]

6 голосов
/ 22 ноября 2011

В этом случае не добавляйте индекс, mysql, вероятно, будет выполнять полное сканирование в любом случае, даже если он использует индекс, это может быть просто нежелательными издержками.

6 голосов
/ 22 ноября 2011

Если он содержит только 25 строк, это может привести к снижению производительности вместо повышения производительности.и оптимизатор запросов может отказаться от использования этого индекса.

1 голос
/ 22 ноября 2011

Является ли name уникальным?

Если это так, вам нужен уникальный индекс для поддержания целостности данных.

Если нет, когда вы расширяете запрос для выполнения JOINs и т. Д., Отсутствие индекса может повредить. Для 25 статических строк, как это может добавить накладные расходы?

Я не согласен с другими ответами ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...