首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >INT和VARCHAR主键之间是否存在真正的性能差异?

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

Stack Overflow用户
提问于 2008-12-01 21:26:49
回答 9查看 118K关注 0票数 198

在MySQL中,使用INT和VARCHAR作为主键之间是否存在可测量的性能差异?我希望使用VARCHAR作为引用列表的主键(考虑美国国家和国家代码),并且同事不会使用INT AUTO_INCREMENT作为所有表的主键。

正如详细介绍的here一样,我的论点是INT和VARCHAR键之间的性能差异可以忽略不计,因为每个INT外键引用都需要一个连接才能理解引用,VARCHAR键将直接显示信息。

那么,有没有人有过这种特殊用例以及与之相关的性能问题的经验呢?

EN

回答 9

Stack Overflow用户

发布于 2008-12-01 21:30:58

这与性能无关。这是关于什么才是一个好的主键。独一无二且不随时间变化。您可能认为像国家代码这样的实体永远不会随着时间的推移而改变,它将是主键的一个很好的候选者。但痛苦的经验是,这种情况很少发生。

INT AUTO_INCREMENT满足“唯一且不随时间变化”的条件。因此才有了这种偏好。

票数 89
EN

Stack Overflow用户

发布于 2008-12-01 21:33:57

绝对不是。

我做了几个..。有几个。INT、VARCHAR和CHAR之间的性能检查。

具有主键(唯一的和集群的)的1000万记录表具有完全相同的速度和性能(以及子树成本),无论我使用这三种表中的哪一种。

话虽如此..。使用最适合您的应用程序的任何工具。不要担心性能。

票数 37
EN

Stack Overflow用户

发布于 2008-12-01 21:30:09

对于较短的代码,可能没有区别。这一点尤其正确,因为包含这些代码的表可能非常小(最多几千行),并且不会经常更改(何时是我们最后一次添加新的美国州)。

对于键之间有较大变化的较大表,这可能是危险的。例如,考虑使用用户表中的电子邮件地址/用户名。当您有几百万用户,其中一些用户具有长名称或电子邮件地址时,会发生什么情况。现在,任何时候你需要使用这个键连接这个表,它都会变得非常昂贵。

票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/332300

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档