Mysql中的排序规则utf8mb4_unicode_ci和utf8mb4_general_c的总结
这两个归类都是用于UTF-8字符编码。差异在于如何对文本进行排序和比较。
注意:自从MySQL 5.5.3你应该使用utf8mb4而不是utf8。它们都指的是UTF-8编码,但是较旧的utf8有一个MySQL特有的限制,防止使用高于0xFFFD的字符。
主要从排序准确性和性能两方面看:
准确性
utf8mb4_unicode_ci 是基于标准的Unicode来排序和比较,能够在各种语言之间精确排序
utf8mb4_general_ci 没有实现Unicode排序规则,在遇到某些特殊语言或字符是,排序结果可能不是所期望的。
但是在绝大多数情况下,这种特殊字符的顺序一定要那么精确吗。比如Unicode把ß、Œ当成ss和OE来看;而general会把它们当成s、e,再如ÀÁÅåāă各自都与 A 相等。
性能
utf8mb4_general_ci 在比较和排序的时候更快
utf8mb4_unicode_ci 在特殊情况下,Unicode排序规则为了能够处理特殊字符的情况,实现了略微复杂的排序算法。
但是在绝大多数情况下,不会发生此类复杂比较。
general理论上比Unicode可能快些,但相比现在的CPU来说,它远远不足以成为考虑性能的因素,索引涉及、SQL设计才是。
在国内如果用到微信接口了,就用utf8mb4_general_ci否则Emoji表情符号会出现问题
国际化的时候用utf8mb4_unicode_ci
最后更新于 2017-09-04 22:26:34 并被添加「mysql 字符集 utf8mb4_general_c utf8mb4_unicode_ci」标签,已有 315 位童鞋阅读过。
本站使用「署名 4.0 国际」创作共享协议,可自由转载、引用,但需署名作者且注明文章出处