
# 执行计划中有NestLoop导致SQL语句执行慢
#### 问题现象
某业务场景中SQL语句执行慢，打印执行计划发现存在NestLoop。
#### 分析过程
1. 通过EXPLAIN VERBOSE打印语句执行计划，查看执行计划发现SQL语句中存在not in语句。 
   ![](https://support.huaweicloud.com/trouble-dws/figure/zh-cn_image_0000001163678325.png "点击放大")
   
   
2. 执行计划中存在NestLoop。 
   ![](https://support.huaweicloud.com/trouble-dws/figure/zh-cn_image_0000001119758404.png "点击放大")
   
   
 
#### 分析结果
- NestLoop是导致语句性能慢的主要原因。
- 由于NOT IN对于NULL值的特殊处理，导致语句无法使用高效的HashJoin进行高效处理，性能较差。
 
#### 处理方法
1. 若业务场景中用户不关注NULL值的处理，或者数据中根本不存在NULL值，则可以通过等价改写将NOT IN改写为NOT EXISTS来进行优化。 
   ![](https://support.huaweicloud.com/trouble-dws/figure/zh-cn_image_0000001117358532.png "点击放大")
   
   
 
