在MySQL中使用INT与VARCHAR作为主键之间是否存在可测量的性能差异?我想将VARCHAR用作参考列表的主键(想想美国国家/地区代码),并且同事不会花INT AUTO_INCREMENT作为所有表的主键。
我的论点,详见这里,是INT和VARCHAR之间的性能差异可以忽略不计,因为每个INT外键引用将需要JOIN的参考意义,一个VARCHAR键则直接呈现的信息。
那么,是否有人对这个特定用例及其相关的性能问题有经验?
您指出,可以通过使用自然键而不是代理键来避免一些联接查询。只有您可以评估这样做的好处在您的应用程序中是否很重要。
也就是说,您可以测量应用程序中最重要的查询,因为它们要处理大量数据或执行得非常频繁,因此它们对于提高查询速度至关重要。如果这些查询从消除联接中受益,并且不因使用varchar主键而受苦,则可以这样做。
不要对数据库中的所有表都使用这两种策略。在某些情况下,自然键可能会更好,但在其他情况下,替代键会更好。
其他人指出,在实践中,很少有自然密钥永远不会更改或具有重复项,因此代理密钥通常是值得的。来源:stack overflow
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。