【问题标题】:Do foreign keys affect performance / storage efficiency?外键会影响性能/存储效率吗?
【发布时间】:2012-07-01 15:36:13
【问题描述】:

外键只是为了确保数据库的一致性,还是它们也会影响性能(例如在执行连接时)和/或存储效率(例如,仅使用外表索引等)?

如果您的回答是一般性的,或者您有特定的数据库解决方案(MySQL、PostgresQL、Oracle 等),请务必提及。

【问题讨论】:

    标签: database optimization foreign-keys query-optimization database-performance


    【解决方案1】:

    外键本身就是关于数据一致性的——仅此而已。

    当然,插入和更新对性能有影响,因为需要检查值,但是这对性能的影响是由其他因素决定的。

    一般来说,您应该在主键列和外键列上都有索引 - 这是确保连接使用索引并且速度快的最佳方法(并且拥有索引确实会影响存储 - 它们需要存储在某个地方,之后全部)。

    几乎所有现代 RDBMS 都是如此。

    【讨论】:

    • 此外,您还必须确保索引被使用,例如运行查询的解释。有时您会惊讶于它没有在您预期的时候被使用。不会在您的小型测试数据库中出现问题,但在生产中会出现问题。
    • 所以在你的第二段中你说对性能有负面影响?因为我也想知道是否会有积极的影响。请编辑您的答案以明确这一点。谢谢!
    • @Tomas - 你的问题是针对性能的。在这方面,拥有外键并没有好处。它们的好处在于确保数据模型的一致性。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-29
    相关资源
    最近更新 更多