2013-04-11 2 views
4

Я использую поле «id» - char(22) как первичный ключ для таблицы MySQL. Это поле используется только для фильтрации уникальных идентификаторов при добавлении новых пользователей в таблицу.utf8_bin vs. utf8_general_ci. какая сортировка будет обеспечивать более высокую производительность в таблице mysql?

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

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

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

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?

ответ

5

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

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

Смежные вопросы