Создание индекса MySQL на Varchar всегда делает 2 индекса? - PullRequest
9 голосов
/ 24 мая 2011

В моей таблице есть столбец email, который VARCHAR(255). Большинство писем будет иметь длину всего 40-50 символов, а остальные символы будут там только для редкого случая. Поэтому я хочу индексировать только первые 50 символов столбца электронной почты.

Я пытался сделать это с помощью этого запроса:

ALTER TABLE  `users` ADD INDEX (email(50) )

Однако это создает 2 индекса, один с именем email, а другой email_2. Первый индекс не имеет ограничений по длине, второй имеет ограничение в 50 символов.

Почему это? Есть ли обходной путь или у меня нет другого выбора, кроме как индексировать полный столбец?

1 Ответ

11 голосов
/ 24 мая 2011

Зачем индексировать только первые 50 символов?MySQL будет достаточно умен, чтобы использовать только пространство в индексе для реальных данных.Т.е. для каждой записи не будет выделено 255 символов.Таким образом, нет причин не просто индексировать весь столбец как есть.

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