更新时间:2024-06-20 GMT+08:00
执行计划中有NestLoop导致SQL语句执行慢
问题现象
某业务场景中SQL语句执行慢,打印执行计划发现存在NestLoop。
分析过程
- 通过EXPLAIN VERBOSE打印语句执行计划,查看执行计划发现SQL语句中存在not in语句。
- 执行计划中存在NestLoop。
分析结果
- NestLoop是导致语句性能慢的主要原因。
- 由于NOT IN对于NULL值的特殊处理,导致语句无法使用高效的HashJoin进行高效处理,性能较差。
处理方法
- 若业务场景中用户不关注NULL值的处理,或者数据中根本不存在NULL值,则可以通过等价改写将NOT IN改写为NOT EXISTS来进行优化。
父主题: 集群性能