在MySQL中utf8mb4_0900_ai_ci
和utf8_unicode_ci
数据库文本编码之间有什么区别(特别是在性能方面)?
答案 0 :(得分:1)
utf8_unicode_ci
表示CHARACTER SET utf8
,其中仅包含1字节,2字节和3字节的UTF-8字符。因此,它不包括大多数表情符号和一些汉字。
utf8mb4_unicode_ci
表示CHARACTER SET utf8mb4
是4字节COLLATION
的对应CHARACTER SET utf8mb4
。
多年来,Unicode组织一直在发展规范。这是从其“版本”到MySQL排序规则的映射:
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
,子查询,表扫描等对性能至关重要。