当前位置: 首页 > wzjs >正文

基金会网站模板深圳网站开发公司

基金会网站模板,深圳网站开发公司,做的网站怎么转成网址链接,兖州做网站前两天在项目应用系统放提出一个需要优化的SQL,希望我们能协助进行优化.需优化的sql脚本如下(相关表名已经过处理): select distinct t.id as nId, t.task_id, t.org_id, t.org_name, t.task_date, tb.gather_time,CASEWHEN tb.batch_node 0 THEN 1 ELSE 0END AS taskState,t…

        前两天在项目应用系统放提出一个需要优化的SQL,希望我们能协助进行优化.需优化的sql脚本如下(相关表名已经过处理):

select distinct t.id as nId, t.task_id, t.org_id, t.org_name, t.task_date, tb.gather_time,CASEWHEN tb.batch_node = 0 THEN 1 ELSE 0END AS taskState,tb.failure_reason as executeDetail, t.biz_date as buzDate, t.is_consistency_check, case when cboi.org_no is not null then '1' end as corpBrOrgInfoUploaded,case when cggci.org_no is not null then '1' end as corpGovGuarCoprInfoUploaded,case when cscgi.org_no is not null then '1' end as corpSupyChinGuarInfoUploaded,case when cfpi.org_no is not null then '1' end as corpFiscPoliInfoUploadedfrom T1 tJOIN (SELECT A.* FROM (SELECT * , ROW_NUMBER () OVER ( PARTITION BY task_id ORDER BY batch_seq_id DESC ) AS rn FROM T2) A WHERE A.rn = 1) tb ON t.task_id = tb.task_id        left join "T3" cboi on cboi.task_id = tb.task_idand cboi.batch_seq_id = tb.batch_seq_idleft join "T4" cggci on cggci.task_id = tb.task_idand cggci.batch_seq_id = tb.batch_seq_idleft join "T5" cscgi on cscgi.task_id = tb.task_idand cscgi.batch_seq_id = tb.batch_seq_idleft join "T6" cfpi on cfpi.task_id = tb.task_idand cfpi.batch_seq_id = tb.batch_seq_id    and t.task_frequency = '3'           ORDER BY t.task_date desc limit 10;

          单独拎出来跑下执行计划:

        通过执行计划很容易看出来是Hash Left Join完成到Sort开始耗时过长,计划中其他节点用时都没问题.

        附言:窗口函数对于数据量的预估干扰,窗口函数无法保证准确的预估,包括ORACLE也是.

        根据上图执行计划中Sort Method:external merge Disk:53208KB,会话级修改work_mem参数保证Sort Method:quicksort后,执行时间并没有明显的改善.又尝试会话级禁用nestloopjoin改用hashjoin也没得到很好的效果.那就只能从耗时大的节点(Sort)入手处理了.

        去掉distinct,将查询出来的数据通过create table as的方式导入到临时表t_temp1中,在查看select distinct * from t_temp1的执行计划,如下图所示:

        HsahAggregate节点与之前的Sort节点相比,时间缩短了很多.下面尝试把order by提到外层,修改后的sql如下:

select * from
(
select distinct t.id as nId, t.task_id, t.org_id, t.org_name, t.task_date, tb.gather_time,CASEWHEN tb.batch_node = 0 THEN 1 ELSE 0END AS taskState,tb.failure_reason as executeDetail, t.biz_date as buzDate, t.is_consistency_check, case when cboi.org_no is not null then '1' end as corpBrOrgInfoUploaded,case when cggci.org_no is not null then '1' end as corpGovGuarCoprInfoUploaded,case when cscgi.org_no is not null then '1' end as corpSupyChinGuarInfoUploaded,case when cfpi.org_no is not null then '1' end as corpFiscPoliInfoUploadedfrom T1 tJOIN (SELECT A.* FROM (SELECT * , ROW_NUMBER () OVER ( PARTITION BY task_id ORDER BY batch_seq_id DESC ) AS rn FROM T2) A WHERE A.rn = 1) tb ON t.task_id = tb.task_id        left join "T3" cboi on cboi.task_id = tb.task_idand cboi.batch_seq_id = tb.batch_seq_idleft join "T4" cggci on cggci.task_id = tb.task_idand cggci.batch_seq_id = tb.batch_seq_idleft join "T5" cscgi on cscgi.task_id = tb.task_idand cscgi.batch_seq_id = tb.batch_seq_idleft join "T6" cfpi on cfpi.task_id = tb.task_idand cfpi.batch_seq_id = tb.batch_seq_id    and t.task_frequency = '3'           ) ORDER BY t.task_date desc limit 10;

        查看执行计划,distinct去重操作还是走了Sort(理论上distinct也可以走HsahAggregate),而不是HsahAggregate.在select distinct中间手动添加/* + hashagg */hint后,再执行看看执行计划:

        手动添加hint后还是不能走HsahAggregate.保留hint,将order by去掉再执行看看执行计划:

        一如既往,还是不走HsahAggregate.

        .换个思路,尝试替换distinct为group by,看看能不能走HsahAggregate.修改后的sql如下:

select /* + hashagg */t.id as nId, t.task_id, t.org_id, t.org_name, t.task_date, tb.gather_time,CASEWHEN tb.batch_node = 0 THEN 1 ELSE 0END AS taskState,tb.failure_reason as executeDetail, t.biz_date as buzDate, t.is_consistency_check, case when cboi.org_no is not null then '1' end as corpBrOrgInfoUploaded,case when cggci.org_no is not null then '1' end as corpGovGuarCoprInfoUploaded,case when cscgi.org_no is not null then '1' end as corpSupyChinGuarInfoUploaded,case when cfpi.org_no is not null then '1' end as corpFiscPoliInfoUploadedfrom T1 tJOIN (SELECT A.* FROM (SELECT * , ROW_NUMBER () OVER ( PARTITION BY task_id ORDER BY batch_seq_id DESC ) AS rn FROM T2) A WHERE A.rn = 1) tb ON t.task_id = tb.task_id        left join "T3" cboi on cboi.task_id = tb.task_idand cboi.batch_seq_id = tb.batch_seq_idleft join "T4" cggci on cggci.task_id = tb.task_idand cggci.batch_seq_id = tb.batch_seq_idleft join "T5" cscgi on cscgi.task_id = tb.task_idand cscgi.batch_seq_id = tb.batch_seq_idleft join "T6" cfpi on cfpi.task_id = tb.task_idand cfpi.batch_seq_id = tb.batch_seq_id    and t.task_frequency = '3'GROUP BY t.id , t.task_id, t.org_id, t.org_name, t.task_date, tb.gather_time,CASEWHEN tb.batch_node = 0 THEN 1 ELSE 0END ,tb.failure_reason , t.biz_date as buzDate, t.is_consistency_check, case when cboi.org_no is not null then '1' end ,case when cggci.org_no is not null then '1' end ,case when cscgi.org_no is not null then '1' end ,case when cfpi.org_no is not null then '1' end      ORDER BY t.task_date desc limit 10;

        查看修改后的执行计划:

        从Sort改走了HsahAggregate,效率提升很多.

        上述排查过程并不是本人独自完成,优化方法是请教的专门做优化的同事,后期自己总结归纳出来的优化思路.

        总结:通过执行计划找到具体执行慢的部分,去做针对性优化.

http://www.dtcms.com/wzjs/385138.html

相关文章:

  • 怎么可以做赌博的网站厦门seo顾问
  • 网站建设 网站内容 采集搜索引擎优化seo名词解释
  • 四川网站建设多少钱百度官网app
  • 网站开发难度快速排名工具免费查询
  • java开发网站跟php开发网站区别最新的疫情情况
  • 重庆网站建设 优化百度知道合伙人
  • 深圳国税局深圳做网站公司网络宣传推广方法
  • 网站收录查询情况平台连接
  • 有哪些做简历的网站重庆seo排名
  • 文登网站建设微信营销的特点
  • 陕西营销型手机网站建设seo综合查询平台官网
  • 泉州建设部网站郑州百度推广公司地址
  • 网站设计与制作包括互联网广告代理商
  • 简单网页模板图片福建网络seo关键词优化教程
  • 商标设计注册粤语seo是什么意思
  • 城市中国商业网站平台网站推广网络推广
  • 建设网站要多少钱线上营销推广方案
  • 天天网站建设2022年新闻大事
  • 注册小规模公司流程及费用上海小红书seo
  • 网站名称要求百度seo关键词排名优化
  • 企业网站开发步骤事件营销的概念
  • c 做网站网络营销的10个特点
  • 文章 百度网站创建及发展历史汕头seo服务
  • 山东济宁做网站的公司有哪些学生个人网页设计模板
  • 天津网站建设开发有哪些app推广平台有哪些
  • 网站登录接口怎么做百度帐号注册
  • 网站more应该怎么做今日重点新闻
  • 网站做收藏任务有用吗免费网站安全软件大全游戏
  • 集团公司网站源码下载海外seo是什么
  • 网页制作合同样本seo是什么职位缩写