Размеры индекса в MySQL - PullRequest
       12

Размеры индекса в MySQL

7 голосов
/ 08 апреля 2010

Я только начинаю исследовать оптимизацию для моей базы данных MySQL. Из того, что я читаю, индексация кажется хорошей идеей - поэтому я хочу создать индекс для одного из моих VARCHAR столбцов, для таблицы, используя механизм MyISAM.

Из того, что я читаю, я понимаю, что индекс ограничен размером в 1000 байтов. Символ VARCHAR имеет размер 3 байта. Означает ли это, что если я хочу индексировать столбец VARCHAR с 50 строками, мне нужен индексный префикс из 6 символов? (1000 байтов / 50 строк / 3 байта на символ = 6,66)

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

Я что-то упустил?

Ответы [ 2 ]

4 голосов
/ 08 апреля 2010

Из того, что я прочитал, я понимаю, что индекс ограничен размером 1000 байт.

Индекс ключ длина ограничена 1000 байтов в MyISAM, 767 байтов в InnoDB (на столбец).

Это означает, что вы не можете индексировать один столбец UTF8 длиной более 333 символов в MyISAMтаблица (при расчете максимального размера индекса MySQL предполагает 3 байт на символ, хотя фактическая длина может быть намного меньше)

Вы можете создать столько проиндексированных записей, сколько вам нужно.

0 голосов
/ 08 апреля 2010

Я думаю, что это означало ширину varchar.Если максимальный размер индекса составляет 1000 байтов, а длина varchar составляет 3 байта, то максимальный индексируемый размер будет 1000/3.

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