我使用“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/