我在想,
在MySQL中使用约束作为外键的动机是什么,因为我确信我可以规定添加的类型?
它是否提高了性能?
答案 0 :(得分:65)
Foreign keys强制执行referential integrity。这些约束保证表order_details
中具有引用order_id
表的字段orders
的行永远不会具有order_id
值,而orders
值不存在于{{1}}中表。
外键不需要具有可用的关系数据库(事实上MySQL's default storage引擎不支持FK),但它们对于避免破坏关系和孤立行(即参照完整性)是必不可少的。 ACID中的 C 需要在数据库级别强制实施参照完整性的能力。
至于您对性能的担忧,一般来说会有性能成本,但可能会忽略不计。我建议你输入你所有的外键约束,如果你遇到了一些你无法解决的真正的性能问题,只能在没有它们的情况下进行实验。
答案 1 :(得分:0)
一个原因是一组带有外键约束的表不能分片到多个数据库中。