【发布时间】:2017-10-17 13:49:46
【问题描述】:
有人知道,FK 会减少 MySQL 中的插入/更新操作吗? 我使用引擎 INNODB。
【问题讨论】:
标签: mysql foreign-keys innodb
有人知道,FK 会减少 MySQL 中的插入/更新操作吗? 我使用引擎 INNODB。
【问题讨论】:
标签: mysql foreign-keys innodb
INDEX 以验证其他表中是否存在相应的行。这是写入期间的一个较小的性能负担。SELECT ... JOIN 时,您未能明确提供适当的索引,某些FK 产生的隐式索引可能会发挥作用。这对某些 JOINs 来说是一个很大的好处,但不需要 FK,因为您可以手动添加 INDEX。ON DELETE or UPDATE,则可能需要做更多的工作,尤其是对于 CASCADE。 CASCADE 的效果可以通过 SELECT 加上更多代码来实现 - 但不如让 CASCADE 完成工作效率高。这听起来像“减少插入/更新操作”吗?
【讨论】:
FK 会减少 MySQL 中的插入/更新操作吗?
这与 MySQL 无关,但是的 确实如此。在列上创建 FK 将创建二级索引,因此在 DML 操作时,这些索引也需要更新,以便获得正确的表统计信息。这样,DB优化器就可以生成正确高效的查询计划
【讨论】: