开发者社区> 问答> 正文

INT和VARCHAR主键之间在真实性能上有区别吗?

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

我的论点,详见这里,是INT和VARCHAR之间的性能差异可以忽略不计,因为每个INT外键引用将需要JOIN的参考意义,一个VARCHAR键则直接呈现的信息。

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

展开
收起
保持可爱mmm 2020-05-10 21:41:30 707 0
1 条回答
写回答
取消 提交回答
  • 您指出,可以通过使用自然键而不是代理键来避免一些联接查询。只有您可以评估这样做的好处在您的应用程序中是否很重要。

    也就是说,您可以测量应用程序中最重要的查询,因为它们要处理大量数据或执行得非常频繁,因此它们对于提高查询速度至关重要。如果这些查询从消除联接中受益,并且不因使用varchar主键而受苦,则可以这样做。

    不要对数据库中的所有表都使用这两种策略。在某些情况下,自然键可能会更好,但在其他情况下,替代键会更好。

    其他人指出,在实践中,很少有自然密钥永远不会更改或具有重复项,因此代理密钥通常是值得的。来源:stack overflow

    2020-05-10 21:41:41
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载