首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL:整理性能

问MySQL:整理性能
EN

Database Administration用户
提问于 2013-07-05 13:32:24
回答 1查看 1.7K关注 0票数 1

我有一个名为users的表,它有一个列firstname和一个collation utf8_bin

当我执行如下查询时,我想知道在引擎盖下会发生什么情况:

代码语言:javascript
复制
SELECT * FROM `users` `a` WHERE `a`.`firstname` = 'sander' COLLATE utf8_general_ci

列firstname不是索引,执行命令时性能如何?

如果默认的排序规则是utf8_general_ci,而查询是在没有COLLATE的情况下执行的,那么怎么办?

我想知道它对一张大桌子的影响。

EN

回答 1

Database Administration用户

回答已采纳

发布于 2013-07-05 14:17:15

在这种情况下,由于强制排序规则是在与列的编码相同的字符集上定义的,因此不会对性能产生任何影响(相对于将该排序规则定义为列的默认值;而由于需要额外的查找/计算,utf8_general_ci在比较中的执行速度几乎肯定会比utf8_bin慢)。

但是,如果强制在不同字符集上定义排序规则,MySQL将不得不对列的值进行代码转换(这将对性能产生影响);我认为,如果强制排序规则位于Unicode字符集之上,它会自动执行该操作,或者在任何其他情况下都会引发“非法排序组合”错误。

请注意,根据列的定义记录的排序规则只是对MySQL的一个提示,而排序规则是首选的;根据表达的校对下面详细描述的规则,它可能在给定表达式中使用,也可能不使用。

票数 2
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/45773

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档