Я только начинаю исследовать оптимизацию для своей базы данных MySQL. Из того, что я читаю, индексация походит на хорошую идею - таким образом, я желаю создать индекс на одном из моего VARCHAR
столбцы, на таблице с помощью MyISAM
механизм.
Из того, что я читаю, я понимаю, что индекс ограничен размером 1 000 байтов. A VARCHAR
символ составляет 3 байта в размере, все же. Делает это означает это, если я хочу к индексу a VARCHAR
столбец с 50 строками, мне нужен индексный префикс 6 символов? (1 000-байтовые / 50 строки / 3 байта за символ = 6.66)
Если так, это кажется небольшим comiplicated - который является, почему я подвергаю сомнению свое понимание. Это кажется довольно нечетным, что Вы только смогли бы к индексным 333 строкам в a VARCHAR
столбец, с помощью префикса 1 символа.
Я пропускаю что-то?
Из того, что я прочитал, я понимаю, что размер индекса ограничен 1000 байтами.
Ключ индекса длина ограничена 1000
байтов в MyISAM
, 767
байтов в InnoDB
(на столбец).
Это означает, что вы не можете проиндексировать один столбец UTF8
длиной более 333
символов в таблице MyISAM
(при вычислении максимального размера индекса ] MySQL
предполагает 3
байта на символ, хотя фактическая длина может быть намного меньше)
Вы можете создать столько индексированных записей, сколько вам нужно.
Я думаю, это означало ширину varchar. Если максимальный размер индекса составляет 1000 байт, а длина varchar - 3 байта, то максимальный индексируемый размер будет 1000/3.