首页 > 解决方案 > 在不需要 utf8 字符的 MySQL 列中设置更严格的排序规则是否更有效?

问题描述

创建一个新表,我希望在其中索引几VARCHAR列,但其中只有一个真正需要utf8_unicode_ci排序规则。

搜索表以仅将该单列设置为utf8_unicode_ci排序规则时会更有效吗?

或者如果我用utf8_unicode_ci排序规则整理整个表格,它是否相同?

标签: mysqlindexingunicodecollation

解决方案


如果使用二进制排序规则,字符串比较会快一点。

当您使用 utf8_unicode_ci 之类的排序规则时,MySQL 必须逐个字符地进行字符串比较,以便根据您使用的排序规则中的规则判断每个字符是否等效。

但是使用二进制排序规则,MySQL 被优化为使用系统调用memcmp()将整个字符串作为文字字节进行比较。这意味着没有字符等效规则。此比较区分大小写。

但是,这样做的性能优势很小,使用索引的优势要大得多。


推荐阅读