【发布时间】:2014-04-03 10:34:39
【问题描述】:
使用 PK unsigned int(4 bytes) 与 varchar(15)(唯一索引)列查找 MySQL 表(当前为 2M 行)之间是否存在显着的性能差异?
【问题讨论】:
-
utf8 中的 15 个字符是 60 个字节 - 我会勇敢地说,如果不进一步思考,它至少会慢 15 倍
标签: mysql database performance
使用 PK unsigned int(4 bytes) 与 varchar(15)(唯一索引)列查找 MySQL 表(当前为 2M 行)之间是否存在显着的性能差异?
【问题讨论】:
标签: mysql database performance
将 VARCHAR 用于任何 KEY 的问题是它们可以容纳 WHITE SPACE。空格由任何非屏幕可读字符组成,例如空格制表符、回车符等。当您开始寻找为什么表不返回最后带有额外空格的记录时,使用 VARCHAR 作为键会让您的生活变得困难他们的钥匙。
当然,您可以使用 VARCHAR,但您必须非常小心输入和输出。它们还占用更多空间,并且在执行查询时可能更慢。
整数类型有一个包含 10 个有效字符的小列表,即 0、1、2、3、4、5、6、7、8、9。它们是用作键的更好的解决方案。
如果您想获得更快查找的优势,您始终可以使用基于整数的键并使用 VARCHAR 作为 UNIQUE 值。
【讨论】:
更短的键意味着每个索引块有更多的键,意味着更少的索引块检索,意味着更快的查找。
【讨论】: