MySQL中的多列主键是优化问题吗?

时间:2009-10-06 15:02:43

标签: mysql key

一直在研究使用多列主键,因为性能对于流量和数据库的大小非常重要,我需要知道在我开始在我的许多表上抛出唯一ID方法之前需要考虑的事情。开始使用mulit列主键。

那么,使用多列主键与基本单列auto-inc主键的性能/优化优缺点是什么?

2 个答案:

答案 0 :(得分:2)

是否有特殊原因需要/想要使用多列密钥而不是(我假设)已创建的单列密钥?

Natural Keys的一个问题是处理所有外键的键值更新级联。代理键(如自动增量列)可以避免这种情况。

在性能方面,根据行数,列的数据类型,存储引擎以及专用于MySQL的RAM数量,多列密钥可能会影响性能,因为它的大小很大。索引。

根据我的经验,在开发和维护方面使用代理键作为PK几乎总是更容易,然后创建覆盖自然键的查询的索引。但是,确定应用程序真正的性能影响的唯一方法是使用逼真的实际负载和数据集对其进行基准测试。

HTH -

克里斯

答案 1 :(得分:0)

我不认为多个主键会出现任何性能问题。它或多或少等同于拥有多个索引(在执行插入时,您将花费更多时间计算索引值)。

有时,使用多个键时,数据模型更有意义。我担心首先是直截了当而担心性能第二。您始终可以添加更多索引,改进查询或改变服务器设置。

我认为我遇到的最多的是一个4列主键。让我畏缩了一下,但它起作用了。


[1]“工作”被定义为“应用程序执行到规范”,并不意味着暗示实际任务是使用所述应用程序完成的。 :)