【发布时间】:2012-07-01 15:36:13
【问题描述】:
外键只是为了确保数据库的一致性,还是它们也会影响性能(例如在执行连接时)和/或存储效率(例如,仅使用外表索引等)?
如果您的回答是一般性的,或者您有特定的数据库解决方案(MySQL、PostgresQL、Oracle 等),请务必提及。
【问题讨论】:
标签: database optimization foreign-keys query-optimization database-performance
外键只是为了确保数据库的一致性,还是它们也会影响性能(例如在执行连接时)和/或存储效率(例如,仅使用外表索引等)?
如果您的回答是一般性的,或者您有特定的数据库解决方案(MySQL、PostgresQL、Oracle 等),请务必提及。
【问题讨论】:
标签: database optimization foreign-keys query-optimization database-performance
外键本身就是关于数据一致性的——仅此而已。
当然,插入和更新对性能有影响,因为需要检查值,但是这对性能的影响是由其他因素决定的。
一般来说,您应该在主键列和外键列上都有索引 - 这是确保连接使用索引并且速度快的最佳方法(并且拥有索引确实会影响存储 - 它们需要存储在某个地方,之后全部)。
几乎所有现代 RDBMS 都是如此。
【讨论】: