为什么在MySQL中使用外键约束?

时间:2010-08-08 10:34:22

标签: sql mysql foreign-keys

我在想,

在MySQL中使用约束作为外键的动机是什么,因为我确信我可以规定添加的类型?

它是否提高了性能?

2 个答案:

答案 0 :(得分:65)

Foreign keys强制执行referential integrity。这些约束保证表order_details中具有引用order_id表的字段orders的行永远不会具有order_id值,而orders值不存在于{{1}}中表。

外键不需要具有可用的关系数据库(事实上MySQL's default storage引擎不支持FK),但它们对于避免破坏关系和孤立行(即参照完整性)是必不可少的。 ACID中的 C 需要在数据库级别强制实施参照完整性的能力。

至于您对性能的担忧,一般来说会有性能成本,但可能会忽略不计。我建议你输入你所有的外键约束,如果你遇到了一些你无法解决的真正的性能问题,只能在没有它们的情况下进行实验。

答案 1 :(得分:0)

一个原因是一组带有外键约束的表不能分片到多个数据库中。