Mysql ASCII против Unicode - PullRequest
       11

Mysql ASCII против Unicode

2 голосов
/ 20 сентября 2009

Просто быстро:

Будет ли запрос SELECT ... WHERE name LIKE '...' выполняться быстрее, если столбец имени ASCII, а не UTF-8?

Спасибо!

Ответы [ 2 ]

6 голосов
/ 22 сентября 2009

Я провел несколько тестов синхронизации набора символов в MySQL 5. Кодировка символов столбца влияет на скорость: если столбец имеет формат UTF8, то управление текстом примерно на 60% длиннее, чем в ASCII или Latin1. Это верно независимо от того, возвращаются ли результаты в том же наборе символов, что и столбец, или они преобразуются, и это не зависит от набора символов запроса. Только набор символов столбца имеет значение!

НО, прежде чем приступить к конвертации всего в ASCII, поймите, что этот 60-процентный удар относится только к части обработки текста в базе данных, и в общем случае операции доступа к строкам и индексирования в несколько раз уменьшают эту незначительную разницу. Например, на современном, но дешевом сервере Linux я оценил разницу как стоимость всего 16 мс на мегабайт текста.

Во всех ситуациях, кроме самых критических, эта небольшая разница стоит того, чтобы обеспечить согласованный рабочий процесс UTF-8.

6 голосов
/ 20 сентября 2009

Нет, не совсем. Нет причин, по которым это должно происходить во всяком случае, они будут сравнивать почти одинаковое количество, если не точно одинаковое количество данных.

Могут быть некоторые очень незначительные накладные расходы для преобразования текстовых кодировок, но это не будет ничего, кроме накладных расходов на фактическое выполнение запроса.

...