为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

心有法竹 2019-07-24 10:30:08
INT和VARCHAR主键之间是否存在真正的性能差异?使用INT与VARCHAR作为MySQL中的主键之间是否存在可衡量的性能差异?我想使用VARCHAR作为参考列表的主键(想想美国,国家代码),并且同事不会将INT AUTO_INCREMENT作为所有表的主键。我的论点,详见这里,是INT和VARCHAR之间的性能差异可以忽略不计,因为每个INT外键引用将需要一个JOIN,使参考的意义上说,VARCHAR键则直接呈现的信息。那么,有没有人有这个特定用例的经验以及与之相关的性能问题?
查看完整描述

3 回答

?
一只甜甜圈

TA贡献1836条经验 获得超5个赞

您可以通过使用所谓的自然键而不是代理键来避免一些已连接的查询。只有您可以评估其在您的应用中的好处是否重要。

也就是说,您可以在应用程序中测量最快速的查询,因为它们可以处理大量数据,也可以非常频繁地执行。如果这些查询从消除连接中受益,并且不使用varchar主键,那么就这样做。

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

其他人提出一个很好的观点,即在实践中很少有自然键永远不会改变或有重复,所以代理键通常是值得的。


查看完整回答
反对 回复 2019-07-24
?
胡说叔叔

TA贡献1804条经验 获得超8个赞

这与表现无关。这是关于什么是一个好主键。随着时间的推移,独特而不变。您可能认为诸如国家/地区代码之类的实体从未随时间而变化,并且是主键的良好候选者。但痛苦的经历是很少见到的。

INT AUTO_INCREMENT满足“独特且不变的时间”条件。因此偏好。


查看完整回答
反对 回复 2019-07-24
  • 3 回答
  • 0 关注
  • 2155 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信