searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

sql优化谓词下推在join场景中的应用

2023-11-03 09:18:58
17
0

列裁剪(分区裁剪):将为查询的字段以及分区过滤,从而减少加载的数据量。

Map端聚合配置:在map端惊醒聚合,减少shuffle过程;

谓词下推:限制条件进行提前过滤,减少下游处理的数据量;

空值过滤:提前惊醒空值过滤,避免空值引起倾斜;

目前,hive中谓词下推、map端聚合参数是默认开启的。本文中简单的介绍sql优化方式中的谓词下推的方式及适用的场景。

谓词下推的原理是将sql 中的限制条件的逻辑尽可能的提前在sql 中执行,从而减少加载的数据量,提升下游数据处理的效率以及减少内存消耗。该种方式在hive,MySQL,Doris的语法中均适用 。在hive中,对应的逻辑优化器是PredicatePushDown,打开谓词下推可以通过命令 hive (default)> set hive.optimize.ppd = true;在hive中,默认是true。Doris中,从CBO优化器 tree ReWrite中也可以实现该优化。

sql中常用的谓词及即sql查询条件中返回值为true的函数或是隐式转换为boolean的函数。如”where”、”on”、”limit”、”and”、”like”、”is null”等常用函数。其出现在多表关联的场景中,关联又left join,right join ,inner join以及full join。

下推场景总结

  where on
左表 右表 左表 右表
left join 下推 下推 下推
join  下推 下推 下推 下推
right join 下推 下推 下推
full join 
0条评论
0 / 1000
l****n
6文章数
0粉丝数
l****n
6 文章 | 0 粉丝
原创

sql优化谓词下推在join场景中的应用

2023-11-03 09:18:58
17
0

列裁剪(分区裁剪):将为查询的字段以及分区过滤,从而减少加载的数据量。

Map端聚合配置:在map端惊醒聚合,减少shuffle过程;

谓词下推:限制条件进行提前过滤,减少下游处理的数据量;

空值过滤:提前惊醒空值过滤,避免空值引起倾斜;

目前,hive中谓词下推、map端聚合参数是默认开启的。本文中简单的介绍sql优化方式中的谓词下推的方式及适用的场景。

谓词下推的原理是将sql 中的限制条件的逻辑尽可能的提前在sql 中执行,从而减少加载的数据量,提升下游数据处理的效率以及减少内存消耗。该种方式在hive,MySQL,Doris的语法中均适用 。在hive中,对应的逻辑优化器是PredicatePushDown,打开谓词下推可以通过命令 hive (default)> set hive.optimize.ppd = true;在hive中,默认是true。Doris中,从CBO优化器 tree ReWrite中也可以实现该优化。

sql中常用的谓词及即sql查询条件中返回值为true的函数或是隐式转换为boolean的函数。如”where”、”on”、”limit”、”and”、”like”、”is null”等常用函数。其出现在多表关联的场景中,关联又left join,right join ,inner join以及full join。

下推场景总结

  where on
左表 右表 左表 右表
left join 下推 下推 下推
join  下推 下推 下推 下推
right join 下推 下推 下推
full join 
文章来自个人专栏
数据治理-数据质量
6 文章 | 1 订阅
0条评论
0 / 1000
请输入你的评论
0
0