文档首页/ 数据仓库服务 GaussDB(DWS)/ 故障排除/ 集群性能/ 执行计划中有NestLoop导致SQL语句执行慢
更新时间:2024-07-01 GMT+08:00

执行计划中有NestLoop导致SQL语句执行慢

问题现象

某业务场景中SQL语句执行慢,打印执行计划发现存在NestLoop。

分析过程

  1. 通过EXPLAIN VERBOSE打印语句执行计划,查看执行计划发现SQL语句中存在not in语句。

  2. 执行计划中存在NestLoop。

分析结果

  • NestLoop是导致语句性能慢的主要原因。
  • 由于NOT IN对于NULL值的特殊处理,导致语句无法使用高效的HashJoin进行高效处理,性能较差。

处理方法

  1. 若业务场景中用户不关注NULL值的处理,或者数据中根本不存在NULL值,则可以通过等价改写将NOT IN改写为NOT EXISTS来进行优化。