- Кодировка такая же.То есть байты выглядят одинаково.
- Набор символов отличается.У utf8mb4 больше символов.
- Сличение (как выполняется сравнение) отличается.
- Производительность отличается, но это редко имеет значение.
utf8_unicode_ci
подразумевает CHARACTER SET utf8
, который включает только 1-, 2- и 3-байтовые символы UTF-8.Следовательно, он исключает большинство символов эмодзи и некоторые китайские иероглифы.
utf8mb4_unicode_ci
означает, что CHARACTER SET utf8mb4
соответствует COLLATION
для 4-байтового CHARACTER SET utf8mb4
.
Организация Unicode быларазвитие спецификации на протяжении многих лет.Вот сопоставления его «версий» с MySQL Collations:
4.0 _unicode_
5.20 _unicode_520_
9.0 _0900_
Большинство различий будут в областях, с которыми большинство людей никогда не сталкиваются.Один пример: В какой-то момент изменение позволило различать и упорядочивать эмодзи.
Суффикс:
_bin -- just compare the bits; don't consider case folding, accents, etc
_ci -- case folding (A=a) and accent stripping (a=á)
_ai_ci -- case insensitive and accent insensitive
_as (etc) -- accent-sensitive (etc)
Производительность:
_bin -- simple, fast
_general_ci -- fails to compare multiple letters; eg ss=ß, so somewhat fast
... -- slower
_900_ -- (8.0) much faster because of a rewrite
ОднакоСкорость сортировки обычно является наименьшей из проблем производительности в запросах.INDEXes
, JOINs
, подзапросы, сканирование таблиц и т. Д. Гораздо более важны для производительности.