utf8_bin和utf8_general_ci。哪种排序方式在mysql表中提供更快的性能?

4
我使用 'id' 字段 - char(22) 作为MySQL表的主键。这个字段仅用于在向表中添加新用户时过滤唯一ID。
对我来说,是否使用 utf8_binutf8_general_ci 校对规则并不重要,因为字母的大小写不重要,我只使用英文字母作为ID。
唯一的问题是: 哪种校对规则可以提供更快的性能?
我的表最常见的查询如下:
LOAD DATA INFILE ... IGNORE INTO TABLE mytable(id)
or
INSERT IGNORE INTO mytable(id)...
and 
SELECT COUNT(id) FROM mytable

现在,因为表不大,我看不出任何性能差异,但是如果我的表的行数超过2百万会发生什么呢?

utf8_general_ci校对规则在INSERT或LOAD IGNORE以及SELECT COUNT查询时是否能提供更快的性能呢?

1个回答

5

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

话虽如此,id 列上存在索引,而且您只想检测重复项而不是排序,这意味着几乎没有可检测的差异。但是,这只是一个有根据的猜测,所以我可能是错误的(即使我觉得这不太可能)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接