utf8_unicode_ci、utf8_general_ci的区别总结
最近在设计数据表的时候,发现了大家都用的是utf8_general_ci,为什么不用utf8_unicode_ci呢?
官方文档是这样解释的: 当前,utf8_unicode_ci校对规则仅部分支持Unicode校对规则算法。一些字符还是不能支持。并且,不能完全支持组合的记号。这主要影响越南和俄罗斯的一些少数民族语言,如:Udmurt 、Tatar、Bashkir和Mari。
utf8_unicode_ci的最主要的特色是支持扩展,即当把一个字母看作与其它字母组合相等时。例如,在德语和一些其它语言中‘ß’等于‘ss’。
utf8_general_ci是一个遗留的 校对规则,不支持扩展。它仅能够在字符之间进行逐个比较。这意味着utf8_general_ci校对规则进行的比较速度很快,但是与使用utf8_unicode_ci的 校对规则相比,比较正确性较差。
简而言之,就是utf8_unicode_ci校验准确性比较好,utf8_general_ci校验速度比较快。如果你的应用有德语、法语或者俄语,请一定使用utf8_unicode_ci。