mysql的utf8与utf8mb4 异同;utf8mb4_unicode_ci 与 utf8mb4_general_ci 如何选择

utf8mb4是4个字节。utf8是3个字节。utf8mb4兼容性更好,占用空间更大。

主要从排序准确性和性能两方面看:

  • 准确性
    utf8mb4_unicode_ci 是基于标准的Unicode来排序和比较,能够在各种语言之间精确排序
    utf8mb4_general_ci 没有实现Unicode排序规则,在遇到某些特殊语言或字符是,排序结果可能不是所期望的。
    但是在绝大多数情况下,这种特殊字符的顺序一定要那么精确吗。比如Unicode把ߌ当成ssOE来看;而general会把它们当成se,再如ÀÁÅåāă各自都与 A 相等。
  • 性能
    utf8mb4_general_ci 在比较和排序的时候更快
    utf8mb4_unicode_ci 在特殊情况下,Unicode排序规则为了能够处理特殊字符的情况,实现了略微复杂的排序算法。
    但是在绝大多数情况下,不会发生此类复杂比较。general理论上比Unicode可能快些,但相比现在的CPU来说,它远远不足以成为考虑性能的因素,索引涉及、SQL设计才是。 我个人推荐是 utf8mb4_unicode_ci,将来 8.0 里也极有可能使用变为默认的规则。相比选择哪一种collation,使用者应该更关心字符集与排序规则在db里要统一就好。

这也从另一个角度告诉我们,不要可能产生乱码的字段作为主键或唯一索引。我遇到过一例,以 url 来作为唯一索引,但是它记录的有可能是乱码,导致后来想把它们修复就特别麻烦。

转载地址:https://www.cnblogs.com/wish123/p/12531265.html

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
utf8mb4_unicode_ciMySQL中的一种排序规则,它适用于存储和比较Unicode字符的情况。该排序规则基于Unicode标准,它会考虑字符的语义和语言特性进行排序。 具体来说,utf8mb4_unicode_ci排序规则会将字符进行比较,并根据字符的权重值进行排序。在比较过程中,它会考虑字符的大小写、重音符号、重音字符和其他特殊字符的差异。 这种排序规则的特点是: - 对于大多数情况下,它会按照人们的直觉进行排序,例如'A'会排在'a'之前。 - 它会将重音字符和非重音字符视为相等,例如'é'和'e'会被视为相等。 - 它会将不同的字符集合视为相等,例如'ß'和'ss'会被视为相等。 使用utf8mb4_unicode_ci排序规则可以确保在存储和比较Unicode字符时,能够得到正确的排序结果。 范例:<<引用:ALTER TABLE table_name CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;[^1]。引用:SELECT * FROM table_name ORDER BY column_name COLLATE utf8mb4_unicode_ci;。引用:SHOW COLLATION LIKE 'utf8mb4_unicode_ci';[^3]。 以下是在MySQL中使用utf8mb4_unicode_ci排序规则的两个例子: 1. 在已有的表中修改排序规则: ```sql ALTER TABLE table_name CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; ``` 2. 在查询中使用排序规则: ```sql SELECT * FROM table_name ORDER BY column_name COLLATE utf8mb4_unicode_ci; ``` 如果你想查看utf8mb4_unicode_ci排序规则的详细信息,可以使用以下命令[^3]: ```sql SHOW COLLATION LIKE 'utf8mb4_unicode_ci'; ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值