GBase 8a
性能调优
文章

GBase 8a 性能优化方法分享(6)Inner join过滤条件传递的优化

发表于2024-06-21 09:10:5550次浏览0个评论

现场有类似于示例中的SQL,a表与b表进行内关联,并且a表与c表进行左外关联。a表与b表的关联字段为a.c1与b.c1,并且a.c1有取值范围,所以在生成执行计划时b.c1也应该有相应的取值范围。但是在测试版本中我们发现,因为有left join的加入,过滤条件的传递并没有实现,导致b表整表都参与到运算中,降低了SQL性能。

例:

select a.c1 , b.c2

 from a join b

     on a.c1 = b.c1

    left join c

     on a.c2 = c.c2

where a.c1 >= 5

   and a.c1 <= 10 

优化后的效果就是:

select a.c1 , b.c2

 from a join b

     on a.c1 = b.c1

    left join c

     on a.c2 = c.c2

where a.c1 >= 5

   and a.c1 <= 10 

and b.c1 >= 5

and b.c1<=10

评论

登录后才可以发表评论