MySQL обрабатывает один символьный ключ utf-8, а также целое число? - PullRequest
2 голосов
/ 29 сентября 2010

Я работаю над веб-приложением для изучения китайского / японского, в котором многие таблицы индексируются символами («глифами») этих языков.

Мне интересно, будет ли целочисленное значение кода глифа лучше для производительности, чем использование одного символа utf8 (для первичного ключа и индексов)?

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

Теоретически MySQL рассматривал бы единственный символ utf8 как уникальное целочисленное значение, аналогично mediumint (3 байта) ... но я подозреваю, что MySQL вместо этого будет обрабатывать столбец как строку.

Будут ли проблемы с производительностью из-за того, что MySQL рассматривает мой единственный символ utf8 как строку?

Вы бы порекомендовали придерживаться целочисленной кодовой точки для индексов и первичных ключей и, возможно, использовать CONVERT () или другой оператор для получения символа utf8 в результатах?

1 Ответ

1 голос
/ 30 сентября 2010

MySQL будет хранить и индексировать символ UTF-8 в виде многобайтовой строки, да.Поэтому я ожидал бы, что целое число будет более быстрым ключом, хотя разница в производительности вряд ли будет существенной.

Другая возможная проблема заключается в том, что до MySQL 6.0 набор символов utf8 не поддерживает символы вне базового многоязычногоПлоскость (т.е. она ограничена тремя байтами на символ).Если вы хотите использовать некоторые из действительно малоизвестных кандзи на дополнительной идеографической плоскости, это было бы бесполезно.

...