首页 > 解决方案 > 为什么mysql会自动为外键检查添加索引?

问题描述

我知道mysql会这样做,但我不太明白为什么。如果您有一个引用父表的子表,我会理解为什么父表上需要索引。插入时,您必须查找该表中是否存在行。

但是为什么子表会自动创建索引呢?mysql什么时候使用这个索引?

标签: mysql

解决方案


如果您使用 and 之类的选项ON DELETE CASCADEON DELETE SET NULL则必须找到所有相关的子行,并且需要索引来提高效率。

即使您不使用这些选项,检查外键也需要比较父表和子表中的列。在两个表中都需要索引允许仅使用索引来完成此操作,而不是读取整行,这样更有效。


推荐阅读