MySQL: подразумевает ли «уникальное» поле столбца индекс, и если да, то почему? - PullRequest
6 голосов
/ 27 июня 2010

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

Насколько я понимаю, MySQL автоматически индексирует столбец таблицы, который указан как уникальный.Так ли это?

Есть ли причина, по-видимому, в том, что MySQL не может иметь уникальные столбцы БЕЗ индексов?Да, каждое добавление / обновление значения будет O (number_of_rows) операцией без таковой, но, как я уже сказал, разве программист не должен облагаться налогом решением?

1 Ответ

11 голосов
/ 27 июня 2010

Насколько я понимаю, MySQL автоматически индексирует столбец таблицы, указанный как уникальный.Это так?

Да.Это не обязательно «автоматический», хотя, это неявное.UNIQUE - это тип индекса, поэтому, конечно, этот столбец индексируется.

Есть ли какая-то причина, по которой у MySQL, по-видимому, не может быть уникальных столбцов БЕЗ индексов?

Поскольку для MySQL было бы глупо выполнять полное сканирование таблицы для каждого INSERT / UPDATE, чтобы поддержать ограничение уникальности.

Редактировать :

Да, каждая вставка / обновление значения будет O (number_of_rows) операцией без таковой, но, как я уже сказал, разве программист не должен облагаться налогом с решением?

Зачем программистуХотите вручную обеспечить базовую целостность данных вне уровня хранения данных?Я понимаю, куда вы идете с этим, но факт в том, что индекс не может причинить вред чему-либо (это просто занимает немного больше места) - так что на самом деле решение не принимается.

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