Mysql: уникальное поле должно быть индекс? - PullRequest
31 голосов
/ 22 февраля 2012

У меня есть одно уникальное поле в моей таблице, и мне нужно быстро выполнить поиск по нему. Нужно ли индексировать его?

Различается ли поиск по уникальным полям и индексированным полям по скорости или использованию ресурсов?

Ответы [ 3 ]

45 голосов
/ 22 февраля 2012

Нет , вам не нужно индексировать его снова.Когда вы указываете UNIQUE KEY, столбец индексируется.Таким образом, он не имеет различий в производительности с другим индексированным столбцом (например, PRIMARY KEY) того же типа .

Однако, если тип отличается, разница в производительности будет небольшой.

7 голосов
/ 22 февраля 2012

Каждое поле UNIQUE по определению индексируется с помощью UNIQUE INDEX - это также самый быстрый доступный для поиска путь доступа.

6 голосов
/ 22 февраля 2012

Если поле должно быть УНИКАЛЬНО, то оно должно быть либо PRIMARY KEY, либо UNIQUE INDEX.

Что касается производительности между UNIQUE INDEX и INDEX, то при выборе какоба будут использовать один и тот же алгоритм, т.е. хеширование или b-дерево.Просто с индексом UNIQUE, особенно числовым, т. Е. INT, он будет быстрее, чем индекс, содержащий дубликаты, поскольку алгоритмы, такие как b-дерево, могут более эффективно добраться до запрошенной строки (строк)

...