GaussDB SQL调优案例-增加JOIN列非空条件


风晓
风晓 2024-01-15 08:56:55 52541 赞同 0 反对 0
分类: 资源 标签: 国产数据库
GaussDB SQL调优案例-增加JOIN列非空条件

现象描述

  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
SELECT * FROM( ( SELECT  STARTTIME STTIME,  SUM(NVL(PAGE_DELAY_MSEL,0)) PAGE_DELAY_MSEL,  SUM(NVL(PAGE_SUCCEED_TIMES,0)) PAGE_SUCCEED_TIMES,  SUM(NVL(FST_PAGE_REQ_NUM,0)) FST_PAGE_REQ_NUM,  SUM(NVL(PAGE_AVG_SIZE,0)) PAGE_AVG_SIZE,  SUM(NVL(FST_PAGE_ACK_NUM,0)) FST_PAGE_ACK_NUM,  SUM(NVL(DATATRANS_DW_DURATION,0)) DATATRANS_DW_DURATION,  SUM(NVL(PAGE_SR_DELAY_MSEL,0)) PAGE_SR_DELAY_MSEL  FROM  PS.SDR_WEB_BSCRNC_1DAY SDR  INNER JOIN (SELECT      BSCRNC_ID,      BSCRNC_NAME,      ACCESS_TYPE,      ACCESS_TYPE_ID      FROM      nethouse.DIM_LOC_BSCRNC      GROUP BY      BSCRNC_ID,      BSCRNC_NAME,      ACCESS_TYPE,      ACCESS_TYPE_ID) DIM   ON SDR.BSCRNC_ID = DIM.BSCRNC_ID   AND DIM.ACCESS_TYPE_ID IN (0,1,2)   INNER JOIN nethouse.DIM_RAT_MAPPING RAT   ON (RAT.RAT = SDR.RAT) WHERE  ( (STARTTIME >= 1461340800   AND STARTTIME < 1461427200) )   AND RAT.ACCESS_TYPE_ID IN (0,1,2)   --and SDR.BSCRNC_ID is not null GROUP BY  STTIME ) ) ;

执行计划如图1所示。

图1 增加JOIN列非空条件(一)
图片

优化分析

  1. 分析执行计划图1可知,在顺序扫描阶段耗时较多。

  2. 多表JOIN中,由于表PS.SDR_WEB_BSCRNC_1DAY的JOIN列“BSCRNC_ID”存在大量空值,JOIN性能差。

    建议在语句中手动添加JOIN列的非空判断,修改后的语句如下所示。

  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
SELECT * FROM( ( SELECT  STARTTIME STTIME,  SUM(NVL(PAGE_DELAY_MSEL,0)) PAGE_DELAY_MSEL,  SUM(NVL(PAGE_SUCCEED_TIMES,0)) PAGE_SUCCEED_TIMES,  SUM(NVL(FST_PAGE_REQ_NUM,0)) FST_PAGE_REQ_NUM,  SUM(NVL(PAGE_AVG_SIZE,0)) PAGE_AVG_SIZE,  SUM(NVL(FST_PAGE_ACK_NUM,0)) FST_PAGE_ACK_NUM,  SUM(NVL(DATATRANS_DW_DURATION,0)) DATATRANS_DW_DURATION,  SUM(NVL(PAGE_SR_DELAY_MSEL,0)) PAGE_SR_DELAY_MSEL  FROM  PS.SDR_WEB_BSCRNC_1DAY SDR  INNER JOIN (SELECT      BSCRNC_ID,      BSCRNC_NAME,      ACCESS_TYPE,      ACCESS_TYPE_ID      FROM      nethouse.DIM_LOC_BSCRNC      GROUP BY      BSCRNC_ID,      BSCRNC_NAME,      ACCESS_TYPE,      ACCESS_TYPE_ID) DIM   ON SDR.BSCRNC_ID = DIM.BSCRNC_ID   AND DIM.ACCESS_TYPE_ID IN (0,1,2)   INNER JOIN nethouse.DIM_RAT_MAPPING RAT   ON (RAT.RAT = SDR.RAT) WHERE  ( (STARTTIME >= 1461340800   AND STARTTIME < 1461427200) )   AND RAT.ACCESS_TYPE_ID IN (0,1,2)   and SDR.BSCRNC_ID is not null GROUP BY  STTIME ) ) A;

执行计划如图2所示。

图2 增加JOIN列非空条件(二)
图片

如果您发现该资源为电子书等存在侵权的资源或对该资源描述不正确等,可点击“私信”按钮向作者进行反馈;如作者无回复可进行平台仲裁,我们会在第一时间进行处理!

评价 0 条
风晓L1
粉丝 1 资源 2038 + 关注 私信
最近热门资源
桌面通用(全架构)【在双系统环境下隐藏Windows启动菜单】操作指南  2049
银河麒麟桌面操作系统V10(SP1)2203-如何进行远程桌面互访?  1990
银河麒麟桌面操作系统【保留数据盘重装系统】  1800
麒麟系统各种原因开不了机解决(合集)  1575
桌面通用(全架构)【rpm包转成deb包】操作方法  930
银河麒麟桌面操作系统 V10-SP1 双系统安装 efi 分区问题  914
统信系统安装(合集)  852
统信桌面专业版【手动分区安装UOS系统】介绍  844
统启动异常几种类型(initramfs 模式)  687
最近下载排行榜
桌面通用(全架构)【在双系统环境下隐藏Windows启动菜单】操作指南 0
银河麒麟桌面操作系统V10(SP1)2203-如何进行远程桌面互访? 0
银河麒麟桌面操作系统【保留数据盘重装系统】 0
麒麟系统各种原因开不了机解决(合集) 0
桌面通用(全架构)【rpm包转成deb包】操作方法 0
银河麒麟桌面操作系统 V10-SP1 双系统安装 efi 分区问题 0
统信系统安装(合集) 0
统信桌面专业版【手动分区安装UOS系统】介绍 0
统启动异常几种类型(initramfs 模式) 0
作者收入月榜
1

prtyaa 收益393.72元

2

zlj141319 收益220.97元

3

1843880570 收益214.2元

4

IT-feng 收益213.03元

5

风晓 收益208.24元

6

777 收益172.82元

7

Fhawking 收益106.6元

8

信创来了 收益105.89元

9

克里斯蒂亚诺诺 收益91.08元

10

技术-小陈 收益79.5元

请使用微信扫码

加入交流群

请使用微信扫一扫!