MySQL会不会减少插入/更新操作?

时间:2017-10-17 13:49:47

标签: mysql foreign-keys innodb

有人知道吗,FK会减少MySQL中的插入/更新操作吗? 我使用引擎INNODB。

2 个答案:

答案 0 :(得分:1)

  

FK是否减少了MySQL中的插入/更新操作?

它不是关于 MySQL ,而是。在列上创建FK将创建二级索引,因此在DML操作时,这些索引也需要更新,以便具有正确的表统计信息。这样,DB优化器就可以生成正确有效的查询计划

答案 1 :(得分:1)

  • 在表上拥有FK会隐式创建(并维护)索引。
  • 执行某些写入操作时,将检查FK的隐式INDEX以验证另一个表中是否存在相应的行。写入过程中这是一个较小的性能负担。
  • 在执行未能明确提供适当索引的SELECT ... JOIN时,某些FK生成的隐式索引可能会起作用。这对某些JOINs有很大好处,但不需要FK,因为您可以手动添加INDEX
  • 如果FK定义包含ON DELETE or UPDATE,则可能会做更多工作,尤其是CASCADE。使用CASCADE加上更多代码可以实现SELECT的效果 - 但效果不如让CASCADE完成工作。
  • FK受限于他们能做什么。 Stackoverflow充斥着类似&#34的问题;我怎样才能让FK做X?"

是否有任何听起来像#34;减少插入/更新操作"?