【问题标题】:Is it more efficient to set more restrictive collations in MySQL columns that do not require utf8 characters?在不需要 utf8 字符的 MySQL 列中设置更严格的排序规则是否更有效?
【发布时间】:2021-11-03 20:14:15
【问题描述】:

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

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

或者如果我用utf8_unicode_ci collat​​ion 对整个表格进行整理,是否也一样?

【问题讨论】:

  • 不,你试过全文索引
  • 做适当的事;不用担心效率。另外,utf8_unicode_ci 已经很老了。

标签: mysql indexing unicode collation


【解决方案1】:

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

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

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

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

【讨论】:

    猜你喜欢
    • 2011-10-01
    • 2015-07-13
    • 2013-09-13
    • 1970-01-01
    • 2018-06-10
    • 1970-01-01
    • 2018-03-20
    • 1970-01-01
    • 2011-12-08
    相关资源
    最近更新 更多