MYSQL 整理性能

标签 mysql

我有一个名为 users 的表,其中有一列 firstname 和排序规则 utf8_bin

我想知道当我执行类似这样的查询时,幕后发生了什么

SELECT * FROM `users` `a` WHERE `a`.`firstname` = 'sander' COLLATE utf8_general_ci

firstname 不是索引,执行命令时性能会发生什么变化?

如果默认排序规则是 utf8_general_ci 并且查询是在没有 COLLATE 的情况下执行的

我想知道它对一个大表(800万+条记录)的影响

最佳答案

在这种情况下,由于强制排序规则是在与列编码相同的字符集上定义的,因此不会对性能产生任何影响。

但是,如果强制使用在不同字符集上定义的排序规则,则 MySQL 可能必须对列的值进行转码(这对性能产生影响);我认为如果强制排序规则超过 Unicode 字符集,MySQL 会自动执行此操作,任何其他情况都会引发“非法混合排序规则”错误。

请注意,根据列的定义记录的排序规则只是向 MySQL 提示优先排序规则;根据 Collation of Expressions 下详述的规则,它可能会也可能不会用于给定的表达式中.

关于MYSQL 整理性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17489824/

相关文章:

php - 使用 php 和 mysql 登录表单出错

mysql - SQL 中的存储过程用于连接两个表

mysql无法使用mysql if condition in order by

mysql - 仅显示等于临时表中最大值的实例

sql - 从存储为文本的数据库中选择财务值

mysql - 将返回值显示为sql中的列名

javascript - 在查询中附加单引号 (' ' )

mysql - 选择所有具有精确字段的

mysql - 查找 mysql 列中的相似性

python - 如何在 MySQL 数据库上保存 python 对象?