mysql - utf8_bin 与 utf8_general_ci。哪种排序规则将在 mysql 表中提供更快的性能?

标签 mysql collation

我使用“id”字段 - char(22) 作为 MySQL 表的主键。 此字段仅用于在向表中添加新用户时过滤唯一 ID。

对我来说,使用 utf8_bin 还是 utf8_general_ci 排序并不重要,因为字母大小写无关紧要,我只使用英文字母作为 id。

唯一的问题是: 哪种排序规则将提供更快的性能?

我的表最常见的查询是:

LOAD DATA INFILE ... IGNORE INTO TABLE mytable(id)
or
INSERT IGNORE INTO mytable(id)...
and 
SELECT COUNT(id) FROM mytable

现在,由于表不大,我看不出任何性能差异,但是当我的表中的行数超过 200 万时会发生什么情况?

utf8_general_ci 排序规则是否会为 INSERT 或 LOAD IGNORE 和 SELECT COUNT 查询提供更快的性能?

最佳答案

一般来说,utf8_bin 至少和 utf8_general_ci 一样快,因为 it does not perform any processing除了识别多字节字符之外的二进制数据。

也就是说,id 列上存在索引以及您只是想检测重复项而不是排序这一事实应该意味着绝对没有可检测到的差异。然而,这只是一个有根据的猜测,所以我可能是错的(尽管在我看来这不太可能)。

关于mysql - utf8_bin 与 utf8_general_ci。哪种排序规则将在 mysql 表中提供更快的性能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15947450/

相关文章:

mysql - 什么是 Mysql 表元数据锁等待队列排序

mysql - 如何获得外键的ON DELETE和ON UPDATE操作值?

php - MySQL 划分行并在新行上显示结果

postgresql - Postgresql 9.1 中的正确整理

azure-sql-database - 更改 Azure SQL Server 排序规则

Laravel 查询上的 Mysql 排序错误,与搜索参数相关

php - 优雅地处理由 PHP 处理的大型 MySQL 行

php - 将对象从 PHP 传递到 Mysql 存储过程

mysql - 更改排序规则时,UTF8 编码文本被错误更改

MySQL:整理查询 - 有任何副作用吗?