最近在优化集群的大任务,发现许多大任务的SQL都有一个特点:查询数据量大,导致扫描过滤以及shuffle的时间长。这种sql一般都是查询的时间范围比较大(我们集群的表基本都按天分区),从1个月到2年不等,然后又要每天运行,占用了集群相当大的资源。

对于这类任务,其实有很大的优化空间。举个例子:

selectname,count(1) as occurCount
fromtest
wheredate_p > 20200901and date_p < 20200930and province = '福建'
group byname

这个sql每天都会查询近一个月的数据,10月01日查询20200901-20200930的数据,10月02日查询20200902-20201001的数据。我们会发现,10月2日计算的20200902-20200930这些数据其实在1号的时候都已经算过了,这时候又做了重复的计算。为了避免这些重复的计算,我们可以提前每天的数据写入到一张中简表,之后再从这些中简表读取数据进行合并(此时每天的数据合并过一次了,读取数据量会少很多):

优化步骤:

1、建立表 test_intermediate (name,occurCount)

2、创建每日任务 【清洗数据到中间表 test_intermediate】:

insert overwrite table test_intermediate partiton(date_p=${date_p})
selectname,count(1) as occurCount
fromtest_intermediate
wheredate_p = ${date_p}and province = '福建'
group byname

3、优化之前的sql(从中间表读取数据):

selectname,sum(occurCount) as occurCount
fromtest_intermediate
wheredate_p > 20200901and date_p < 20200930
group byname

一些大任务SQL的优化方案相关推荐

  1. 数据库sql常见优化方案

    为什么要优化:      随着实际项目的启动,数据库经过一段时间的运行,最初的数据库设置,会与实际数据库运行性能 会有一些差异,这时我们就需要做一个优化调整. 数据库优化这个课题较大,可分为四大类: ...

  2. mysql和mybatis优化_MySQL + mybatis的SQL优化方案

    sql优化方案: 1.添加索引,在条件参数,关联参数上建立参数, 2.字段优化,需要什么字段查什么字段 3.模糊查询尽量使用: select * from tableName a where a.na ...

  3. mybatis与mysql调优_MySQL + mybatis的SQL优化方案

    sql优化方案: 1.添加索引,在条件参数,关联参数上建立参数, 2.字段优化,需要什么字段查什么字段 3.模糊查询尽量使用: select * from tableName a where a.na ...

  4. 容易忽视的十大SQL优化方案!

    SQL性能问题已经逐步发展成为数据库性能的首要问题,80%的数据库性能问题都是因SQL而导致.面对日益增多的SQL性能问题,如何下手以及如何提前审核已经成为越来越多的程序员必须要考虑的问题.小千总结了 ...

  5. 史上最全MySQL 大表优化方案(长文)

    转载自  史上最全MySQL 大表优化方案(长文) 当MySQL单表记录数过大时,增删改查性能都会急剧下降,可以参考以下步骤来优化: 一.单表优化 除非单表数据未来会一直不断上涨,否则不要一开始就考虑 ...

  6. MySQL 大表优化方案(1)

    转载自  干货!!!MySQL 大表优化方案(1) 当MySQL单表记录数过大时,增删改查性能都会急剧下降,可以参考以下步骤来优化: 单表优化 除非单表数据未来会一直不断上涨,否则不要一开始就考虑拆分 ...

  7. SQL Server数据库优化方案

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

  8. MySQL慢查询之慢SQL定位、日志分析与优化方案

    一个sql执行很慢的就叫慢sql,一般来说sql语句执行超过5s就能够算是慢sql,需要进行优化了 为何要对慢SQL进行治理 每一个SQL都需要消耗一定的I/O资源,SQL执行的快慢直接决定了资源被占 ...

  9. mysql大翻页limt 1700,100慢优化方案

    1.引言 公司有个需求,统计短信系统每天status没成功的电话号码,然后进行统计分析.为了省事,我直接用了现成的sql, 该sql是分页,每次筛选limit一百条,最后合并下,最后不就得出所有的手机 ...

  10. # Sql语句过长报错、查询慢优化方案探索

    Sql 过长查询报错.in过多.查询慢优化方案探索 目录 文章目录 Sql 过长查询报错.in过多.查询慢优化方案探索 目录 背景描述 解决方案 方案1(内存中过滤) 存在问题 方案2 In 查询的内 ...

最新文章

  1. Arm 发布Mali多媒体套件,机器学习将不再是高端手机的专享
  2. idl结果显示窗口如何缩小_科学网—IDL 创建窗口 - 钱磊的博文
  3. 初识Tcl(十):Tcl 过程
  4. 计算出前一期间XXXX物料的期末结算
  5. 问卷星作答能不能检测到屏幕共享_云端检测,别样精彩——大厂回族自治县王必屯中心小学线上期末检测纪实...
  6. oracle sql为null值,在SQL Server Oracle MySQL当数据库中查出某值为NULL怎么办
  7. 取消一个请求(Cancel)
  8. 【牛客 - 318L】彪神666(水题,半高精度,递推,trick)
  9. 基础算法 —— 高精度计算 —— 高精度加法
  10. Nginx 极简入门教程
  11. 如何用matlab分析代谢,代谢流分析工具-CellNetAnalyzer
  12. PAT1011. A+B和C
  13. vim 保存文件的回车换行模式
  14. 局域网上传文件_3分钟内Windows网盘搭建并实现局域网文件共享
  15. 不知不觉 CDSN 也有了百万访问量了
  16. Delphi实现通用的定时自动关机程序
  17. 《从0到1:CTFer成长之路》
  18. 为什么程序员适合做自由职业者
  19. Codable实现json转Model,是时候干掉HandyJSON了!
  20. 铅华洗尽的Windows XP

热门文章

  1. 计算机启动相机代码,如何在win7系统中启动相机
  2. masm 16位汇编语法
  3. Beautiful Soup
  4. 面试百问:项目上线后才发现bug怎么办?
  5. 有关龙的成语(词语)、故事、诗歌
  6. 关于JavaScript继承与原型链的一些理解
  7. 诚龙网刻报错_诚龙网刻|诚龙网维全自动PXE网刻工具 V 11.0 官方版-完美软件下载...
  8. 中兴--维克多博士问题(背包问题升级版)
  9. c语言鞋码,童鞋尺码对照表 童鞋1c、2c、3c和4c是多大码 多少厘米
  10. 一个简单的搜狗微信公众号案例