Индекс MySQL с двумя одинаковыми столбцами - PullRequest
0 голосов
/ 20 октября 2011

У меня есть таблица с несколькими сотнями миллионов строк. Один из столбцов `status` varchar(10).

Большинство значений в статусе - 1 символ, некоторые из которых изменяются до 10. Однако подмножество значений имеет собственный шаблон. Целая группа значений состояния начинается с одного символа c, за которым следует число в диапазоне от 0 до 10000.

Я бы хотел проиндексировать этот столбец следующим образом:

ALTER TABLE tbl ADD KEY (status(1), status);

Это было бы лучше, чем два отдельных ключа: один на status(1) (первый символ целого столбца) и второй status. Вместе они всегда будут быстрее.

Однако MySQL запрещает мне создавать такие:

ERROR 1060 (42S21): Duplicate column name 'status'

Как я могу решить эту проблему?

Ответы [ 2 ]

1 голос
/ 20 октября 2011

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

1 голос
/ 20 октября 2011

Нет никакой причины индексировать status(1) независимо от status.Один индекс, созданный в status, должен одинаково хорошо обрабатывать обе ситуации.

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