utf8_bin против utf8_general_ci. какое сопоставление обеспечит более высокую производительность в таблице MySQL?

Я использую 'idПоле - char(22) в качестве первичного ключа для таблицы MySQL. это поле используется только для фильтрации уникальных идентификаторов при добавлении новых пользователей в таблицу.

для меня не важно использовать ли utf8_bin или же utf8_general_ci сопоставление, потому что регистр букв не имеет значения, и я использую только английские буквы для идентификатора.

Единственный вопрос: какое сопоставление обеспечит более высокую производительность?

Наиболее распространенные запросы для моей таблицы:

LOAD DATA INFILE ... IGNORE INTO TABLE mytable(id)
or
INSERT IGNORE INTO mytable(id)...
and 
SELECT COUNT(id) FROM mytable

Теперь я не вижу никакой разницы в производительности, поскольку таблица невелика, но что происходит, когда количество строк в моей таблице превышает 2 миллиона?

будет ли сортировка utf8_general_ci обеспечивать более высокую производительность для запросов INSERT или LOAD IGNORE и SELECT COUNT?

1 ответ

В общем, utf8_bin будет по крайней мере так же быстро, как utf8_general_ci потому что он не выполняет никакой обработки двоичных данных, кроме распознавания многобайтовых символов.

Тем не менее, наличие индекса на id столбец и тот факт, что вы ищете только обнаружение дубликатов, а не сортировку, должны означать, что не будет абсолютно никакой разницы. Тем не менее, это всего лишь обоснованное предположение, поэтому я могу ошибаться (даже если это не кажется мне вероятным).

Другие вопросы по тегам