【问题标题】:MySQL lookup performance PK unsigned INT vs indexed varchar(15) columnMySQL 查找性能 PK unsigned INT vs indexed varchar(15) 列
【发布时间】:2014-04-03 10:34:39
【问题描述】:

使用 PK unsigned int(4 bytes) 与 varchar(15)(唯一索引)列查找 MySQL 表(当前为 2M 行)之间是否存在显着的性能差异?

【问题讨论】:

标签: mysql database performance


【解决方案1】:

将 VARCHAR 用于任何 KEY 的问题是它们可以容纳 WHITE SPACE。空格由任何非屏幕可读字符组成,例如空格制表符、回车符等。当您开始寻找为什么表不返回最后带有额外空格的记录时,使用 VARCHAR 作为键会让您的生活变得困难他们的钥匙。
当然,您可以使用 VARCHAR,但您必须非常小心输入和输出。它们还占用更多空间,并且在执行查询时可能更慢。
整数类型有一个包含 10 个有效字符的小列表,即 0、1、2、3、4、5、6、7、8、9。它们是用作键的更好的解决方案。
如果您想获得更快查找的优势,您始终可以使用基于整数的键并使用 VARCHAR 作为 UNIQUE 值。

【讨论】:

    【解决方案2】:

    更短的键意味着每个索引块有更多的键,意味着更少的索引块检索,意味着更快的查找。

    【讨论】:

    • 谢谢,你知道大概有什么区别吗?请注意 varchar 索引是唯一的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-29
    • 1970-01-01
    • 1970-01-01
    • 2012-03-17
    • 2013-11-17
    • 1970-01-01
    相关资源
    最近更新 更多