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

执行计划中有NestLoop导致SQL语句执行慢(not in和not exists)

问题现象

客户的SQL语句执行慢,执行计划中有NestLoop。

原因分析

  • NestLoop是导致语句性能慢的主要原因。
  • Hashjoin只能做等值关联,NestLoop的条件中有or条件,所以无法用Hashjoin求解。
  • 导致出现这个现象的原因是由not in的语义决定的(具体可以参考外网关于not in 和 not exists的介绍)。

分析过程

  1. 通过explain verbose打印语句执行计划,观察SQL语句中有not in 语法。

  2. 执行计划中有NestLoop。

处理方法

  1. 大多数场景下,客户需要的结果集其实是可以通过not exists获得的,因此上述语句可以通过修改将not in 修改为not exists。

分享:

    相关文档

    相关产品