Я читал здесь и там, что использование utf8_unicode_ci
сопоставления обеспечивает лучшую обработку текста в Юникоде (например, он знает, как развернуть такие символы, как «œ» в «oe» для поиска и упорядочения) по сравнению со стандартным значением, utf8_general_ci
которое в основном просто исключает диакритические знаки. К сожалению, оба источника указывают, что utf8_unicode_ci
это немного медленнее, чем utf8_general_ci
.
Итак, мой вопрос: что означает «немного медленнее»? Кто-нибудь запускал тесты? Мы говорим о влиянии на производительность -0,01% или, скорее, о -25%?
Спасибо за вашу помощь.
Ответы:
Ну, я не нашел никаких тестов в Интернете, поэтому я решил сделать тесты самостоятельно.
Я создал очень простую таблицу с 500000 строк:
Затем я заполнил его случайными данными, запустив эту хранимую процедуру:
Затем я создал следующие хранимые процедуры для сравнения простого SELECT, SELECT с LIKE и сортировки (SELECT с ORDER BY):
В хранимых процедурах выше используется сортировка utf8_general_ci, но, конечно, во время тестов я использовал как utf8_general_ci, так и utf8_unicode_ci.
Я вызывал каждую хранимую процедуру 5 раз для каждого сопоставления (5 раз для utf8_general_ci и 5 раз для utf8_unicode_ci), а затем вычислял средние значения.
Вот результаты:
benchmark_simple_select () с utf8_general_ci: 9957 мс
benchmark_simple_select () с utf8_unicode_ci: 10271 мс
В этом тесте с использованием utf8_unicode_ci происходит медленнее , чем utf8_general_ci на 3,2%.
benchmark_select_like () с utf8_general_ci: 11441 мс
benchmark_select_like () с utf8_unicode_ci: 12811 мс
В этом тесте использование utf8_unicode_ci медленнее, чем utf8_general_ci на 12%.
benchmark_order_by () с utf8_general_ci: 11944 мс
benchmark_order_by () с utf8_unicode_ci: 12887 мс
В этом тесте с использованием utf8_unicode_ci происходит медленнее , чем utf8_general_ci на 7,9%.
источник
Я не видел никаких тестов, но вы можете запустить свой собственный, используя функцию BENCHMARK :
ЭТАЛОН (количество, выражение)
По совету Мэтью вы можете запустить параллельную установку MYSQL, но учтите, что между различными архитектурами может быть огромное различие (sparc, intel, 32bit, 64bit, ...).
источник