mysql - 为什么mysql会自动为外键检查添加索引?
问题描述
我知道mysql会这样做,但我不太明白为什么。如果您有一个引用父表的子表,我会理解为什么父表上需要索引。插入时,您必须查找该表中是否存在行。
但是为什么子表会自动创建索引呢?mysql什么时候使用这个索引?
解决方案
如果您使用 and 之类的选项ON DELETE CASCADE
,ON DELETE SET NULL
则必须找到所有相关的子行,并且需要索引来提高效率。
即使您不使用这些选项,检查外键也需要比较父表和子表中的列。在两个表中都需要索引允许仅使用索引来完成此操作,而不是读取整行,这样更有效。
推荐阅读
- pandas - “平均值”中的任何值,如果它属于“间隔(1.96)”,则在该间隔的列表中附加相应的“最近城市”
- php - 如何使用php获取Json_encoded的传递参数
- uber-api - 优步服务器令牌不再工作,如何生成新的服务器令牌
- javascript - 我需要生成一组数字,这些数字对个人用户来说是一致的,但对他们来说是独一无二的
- reactjs - 从链接中的对象获取状态到参数
- c# - C# HttpWebRequest - 无法解析此请求:“客户端将 MD5 哈希添加到 X-OriginalHash HTTP 标头”
- java - 将 Vaadin CheckBox 保存到 JPA 的正确方法是什么?
- reactjs - Reactjs - jquery 未在 npm 安装库中定义 - jquery.reel
- excel - 将用户窗体文本框中的文本粘贴到另一个工作表上的 ActiveCell 的相应单元格
- python - 在 Python 中使用 tkinter 打包帧的问题