小编典典

INT 和 VARCHAR 主键之间是否存在真正的性能差异?

all

在 MySQL 中使用 INT 与 VARCHAR 作为主键之间是否存在可测量的性能差异?我想使用 VARCHAR
作为参考列表的主键(想想美国各州、国家/地区代码),并且同事不会将 INT AUTO_INCREMENT 作为所有表的主键。

正如这里所详述的,我的论点是 INT 和 VARCHAR 之间的性能差异可以忽略不计,因为每个 INT 外键引用都需要
JOIN 才能理解引用,VARCHAR 键将直接呈现信息。

那么,是否有人对这个特定的用例以及与之相关的性能问题有经验?


阅读 153

收藏
2022-07-02

共1个答案

小编典典

您提出了一个很好的观点,您可以通过使用所谓的自然键 而不是
代理键

来避免一些连接查询。只有您可以评估这样做的好处在您的应用程序中是否显着。

也就是说,您可以测量应用程序中对速度最重要的查询,因为它们处理大量数据或执行非常频繁。如果这些查询受益于消除连接,并且不会因使用 varchar
主键而受到影响,那么就这样做。

不要对数据库中的所有表使用任何一种策略。在某些情况下,自然键可能更好,但在其他情况下,代理键更好。

其他人提出了一个很好的观点,即在实践中自然键很少更改或重复,因此代理键通常是值得的。

2022-07-02