本文分享自天翼云开发者社区《sql优化谓词下推在join场景中的应用》,作者:i****n

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

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。

下推场景总结

sql优化谓词下推在join场景中的应用的更多相关文章

  1. SQL优化--inner、left join替换in、not in、except

    新系统上线,用户基数16万,各种查询timeout.打开砂锅问到底,直接看sql语句吧,都是泪呀,一大堆in\not in\except.这里总结一下,怎么替换掉in\not in\except. 1 ...

  2. sql优化的50中方法

    查询速度慢的原因很多,常见如下几种:    1.没有索引或者没有用到索引(这是查询慢最常见的问题,是程序设计的缺陷)    2.I/O吞吐量小,形成了瓶颈效应.    3.没有创建计算列导致查询不优化 ...

  3. MySQL之谓词下推

    MySQL之谓词下推 什么是谓词 在SQL中,谓词就是返回boolean值即true或者false的函数,或是隐式转换为boolean的函数.SQL中的谓词主要有 LKIE.BETWEEN.IS NU ...

  4. 京东云TiDB SQL优化的最佳实践

    京东云TiDB SQL层的背景介绍 从总体上概括 TiDB 和 MySQL 兼容策略,如下表: SQL层的架构 用户的 SQL 请求会直接或者通过 Load Balancer 发送到 京东云TiDB ...

  5. SQL优化清单

    SQL优化清单 1.from 语句中包含多个表的情况下,把记录数少的表放在前面 2.where 语句中包含多个条件时,将刷选多的条件放前面 3.避免使用select * ,因为这样会去查询所有列的数据 ...

  6. 大数据SQL中的Join谓词下推,真的那么难懂?

    听到谓词下推这个词,是不是觉得很高大上,找点资料看了半天才能搞懂概念和思想,借这个机会好好学习一下吧. 引用范欣欣大佬的博客中写道,以前经常满大街听到谓词下推,然而对谓词下推却总感觉懵懵懂懂,并不明白 ...

  7. BigData – Join中竟然也有谓词下推!?

    本文由  网易云发布. 在之前的文章中简要介绍了Join在大数据领域中的使用背景以及常用的几种算法-broadcast hash join .shuffle hash join以及 sort merg ...

  8. 【大数据】SparkSql 连接查询中的谓词下推处理 (一)

    本文首发于 vivo互联网技术 微信公众号 https://mp.weixin.qq.com/s/YPN85WBNcnhk8xKjTPTa2g 作者:李勇 目录: 1.SparkSql 2.连接查询和 ...

  9. sql优化 表连接join方式

        sql优化核心 是数据库中 解析器+优化器的工作,我觉得主要有以下几个大方面:1>扫表的方法(索引非索引.主键非主键.书签查.索引下推)2>关联表的方法(三种),关键是内存如何利用 ...

  10. Hive优化之谓词下推

    Hive优化之谓词下推 解释 Hive谓词下推(Predicate pushdown) 关系型数据库借鉴而来,关系型数据中谓词下推到外部数据库用以减少数据传输 基本思想:尽可能早的处理表达式 属于逻辑 ...

随机推荐

  1. C++ decltype类型推导

    1.decltype介绍 decltype(declare type,声明类型)为C++11 新增的关键字,和auto功能一样,用于在编译期间进行自动类型推导. auto和decltype关键字都可以 ...

  2. STM32在使用Clion平台开发时调试失败 SystemClock_Config 返回 HAL_ERROR

    问题记录 在尝试使用Clion在STM32平台上开发调试时,需要通过OpenOCD结合ST-Link等调试器进行烧录和调试.但通过STM32CubeMX生成代码后,发现出现以下现象: 程序能够正常编译 ...

  3. 2025 CCPC打铁记

    Day -? 报名参加 \(CCPC\) Day -1 周天比赛,周六签到. 早上依旧是在 \(lyyz\) 打练习赛. 中午 \(12:30\) 上车,结果教练忘了通知我,再加上我把北门认成南门,导 ...

  4. Kubernetes如何通过StatefulSet支持有状态应用?

    Kubernetes如何通过StatefulSet支持有状态应用? 为什么Deployment不能编排所有类型应用? Deployment认为一个应用中所有的Pod是完全一样的,所以他们之间没有顺序, ...

  5. 基于TCP实现简单的聊天室

    原文出处:<Go 语言编程之旅>第四章4.1节 基于TCP的聊天室 1.服务端 新用户到来,生成一个User的实例,代表该用户. type User struct{ ID int // 用 ...

  6. Hadoop学习第二天

    今天配置Linux网络,首先是虚拟机网络配置,然后是真实机访问虚拟机,然后是配置centos网卡,最后是给IP地址加网络名,然后配置网络服务,但是出错了,目前还没找到问题所在

  7. python中的split()函数

    Python split() 通过指定分隔符对字符串进行切片,如果参数 num 有指定值,则分隔 num+1 个子字符串 a,b,c=input().split(,) 意思是在a,b,c三个输入值直接 ...

  8. 【译】Cloud Academy(云学院):解锁您的 Azure 技能,加速职业发展

    当我们在2025年3月为 Visual Studio 专业版和企业版用户推出云学院福利时,我们的目标很简单:为您提供所需的实践操作学习体验,让您能够自信地掌握 Azure 和云技术,且除了订阅费用外无 ...

  9. Go语言new和make的区别

    一.简单说明 方法 作用 作用对象 返回值 new 分配内存 值类型和用户定义的类型 初始化为零值,返回指针 make 分配内存 内置引用类型(map,slice,channel) 初始化为零值,返回 ...

  10. SAP的PI日志查看工具

    被很多人吐槽的SAP PI能坚挺的活下来,真是不容易... SXI_MONITOR是PI的标准的消息查看器,如果又权限的话,甚至可以做自定义字段的查询增强(如果对单据创建接口,增加单号...速度杠杠的 ...