4

我使用 ' 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 查询提供更快的性能吗?

4

1 回答 1

5

一般来说,utf8_bin它至少会和它一样快,utf8_general_ci因为除了识别多字节字符之外,它不对二进制数据执行任何处理。

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

于 2013-04-11T11:32:40.943 回答