You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何确定需要修改的索引以消除执行计划中的Key Lookup?

同表双INNER JOIN场景下Key Lookup对应优化索引的判断方法
  • 第一步:定位Key Lookup关联的执行分支
    先查看执行计划中Key Lookup的上游节点,确认该回表操作依附于哪次INNER JOIN的执行逻辑:两次JOIN对应独立的执行路径,Key Lookup只会绑定其中一个路径的索引访问操作,直接就能锁定对应的关联分支。
  • 第二步:核对对应索引的覆盖范围
    分别导出两次JOIN调用的两个非聚集索引的定义,对比Key Lookup操作返回的字段列表,找到不包含这些返回字段的索引:Key Lookup的本质是当前用到的非聚集索引没有覆盖查询所需的全部字段,必须回聚集索引拉取数据,缺失目标字段的索引就是需要调整的对象。
  • 第三步:结合执行成本确认优化优先级
    如果执行计划显示两个JOIN分支都存在Key Lookup,优先调整预估执行成本占比更高的分支的索引,单次修改就能拿到最大的性能收益;如果两个分支成本相近,建议把缺失的字段分别加入对应索引的INCLUDE列表即可,不要为了省索引数量把无关字段塞进单个索引,避免索引体积过大拉高日常维护成本。

小提示:不需要把缺失的查询字段都加到索引键列中,非关联、非过滤的字段仅放到INCLUDE列表即可,不会增大索引B树的体积,也不会额外提升索引的更新开销。

内容的提问来源于stack exchange,提问作者TheSQLGuy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 06:45:03