【问题标题】:Query optimization with 3000000 in single date oracle单日期oracle中3000000的查询优化
【发布时间】:2016-07-25 10:14:51
【问题描述】:

表 x 包含数百万行,我必须使用基于函数的索引 (trunc) 获取单个日期的数据。 例如,对于 22-07-16 的单个日期数据,我们有 3000000 行。我也使用大小写列的总和。查询耗时 18 秒。我怎样才能减少时间。

编辑 查询:

 SELECT SUM(
  CASE
    WHEN cssgoldenc1_.impact='Low'
    THEN 1
    ELSE 0
  END) AS col_0_0_,
  SUM(
  CASE
    WHEN cssgoldenc1_.impact='High'
    THEN 1
    ELSE 0
  END) AS col_1_0_
FROM CSSCOMPLIANCEDETAIL csscomplia0_,
  CSSGoldenConfiguration cssgoldenc1_,
  CSS css7_
WHERE csscomplia0_.cssGoldenConfigurationID_FK=cssgoldenc1_.CSSGoldenConfigurationId_PK
AND csscomplia0_.cssID_FK                     =css7_.cssId_PK
AND (cssgoldenc1_.cmcategory                 IN ('Access List','Application of QoS Policy','Archive','BFD','BGP', 'CPU','Clock','Debug','Default settings','Entity Check','IGP Routing','Inclusion in VRF', 'Interface Parameters','LDP','LDP Establishment','License','Logging/Syslog/Debug','MTU Size', 'Multicast','Multilink','NodeReadiness','Nomenclature Related','Performance Optimization', 'QoS','Router OAM','Routing','SNMP','Security','Services','System Recovery', 'Type of Interface','Unicast','Unrequired Services','mBGP'))
AND TRUNC(csscomplia0_.creationDate)          =to_Date('22-07-16','dd-mm-yy')
AND (css7_.softwareVersion                   IN ('/asr920-universalk9.V155_1S2_SR635680903_6.bin', '/asr920-universalk9_npe.03.13.00.S.154-3.S-ext.bin','/asr920-universalk9_npe.03.14.02.S.155-1.S2-std.bin', '/asr920-universalk9_npe.V155_1_S2_SR635680903_2.bin','/asr920-universalk9_npe.V155_1_S2_SR635680903_6.bin', '/bootflash','asr901-universalk9-mz.155-3.S1a.bin','asr903rsp1-universalk9_npe.V155_1_S2_SR635680903_10.bin', 'asr920-universalk9.V155_1S2_SR635680903_6.bin','asr920-universalk9_npe.03.13.00.S.154-3.S-ext.bin', 'asr920-universalk9_npe.03.13.00z.S.154-3.S0z-ext.bin','asr920-universalk9_npe.03.14.02.S.155-1.S2-', 'asr920-universalk9_npe.03.14.02.S.155-1.S2-std.bin','asr920-universalk9_npe.03.15.01.S.155-2.S1-std.bin', 'asr920-universalk9_npe.03.16.01a.S.155-3.S1a-ext.bin','asr920-universalk9_npe.2016-05-10_07.53_saappuku.bin' ,'asr920-universalk9_npe.V155_1_S2_SR635680903_2.bin','asr920-universalk9_npe.V155_1_S2_SR635680903_6.bin',
  'asr920-universalk9_npe.V155_1_S2_SR635680903_6.binn','bootflash'));

索引:

create index idx_fnc on CSSCOMPLIANCEDETAIL(trunc(creationDate));

【问题讨论】:

  • 请发布包含索引的表定义。查询并解释计划。
  • 你试过索引和分区吗?
  • 请检查编辑部分的查询
  • 请发布解释计划。
  • 另外,你没有使用表CSS,你需要加入吗?

标签: sql oracle performance optimization sql-tuning


【解决方案1】:

试试这个。基本上我将CASE 带到子查询中,因为这样它不应该被评估3M 次。我还更改了查询以使用JOIN

with  cssgoldenc1_ as 
    (select /*+ Materialize */   CASE  WHEN impact='Low' THEN 1
                                                         ELSE 0  END AS col_0_0_,
                                 CASE WHEN impact='High' THEN 1
                                                         ELSE 0 END AS col_1_0_,
                                 CSSGoldenConfigurationId_PK
       from CSSGoldenConfiguration
      where cssgoldenc1_.cmcategory IN ('Access List','Application of QoS Policy','Archive','BFD','BGP', 'CPU','Clock','Debug','Default settings','Entity Check','IGP Routing','Inclusion in VRF', 'Interface Parameters','LDP','LDP Establishment','License','Logging/Syslog/Debug','MTU Size', 'Multicast','Multilink','NodeReadiness','Nomenclature Related','Performance Optimization', 'QoS','Router OAM','Routing','SNMP','Security','Services','System Recovery', 'Type of Interface','Unicast','Unrequired Services','mBGP')
     )
SELECT SUM(col_0_0_) AS col_0_0_,
       SUM(col_1_0_) AS col_1_0_
FROM CSSCOMPLIANCEDETAIL csscomplia0_ join cssgoldenc1_ on csscomplia0_.cssGoldenConfigurationID_FK = cssgoldenc1_.CSSGoldenConfigurationId_PK
                                      join CSS css7_   on csscomplia0_.cssID_FK                     = css7_.cssId_PK
WHERE TRUNC(csscomplia0_.creationDate)          =to_Date('22-07-16','dd-mm-yy')
  AND css7_.softwareVersion                   IN ('/asr920-universalk9.V155_1S2_SR635680903_6.bin', '/asr920-universalk9_npe.03.13.00.S.154-3.S-ext.bin','/asr920-universalk9_npe.03.14.02.S.155-1.S2-std.bin', '/asr920-universalk9_npe.V155_1_S2_SR635680903_2.bin','/asr920-universalk9_npe.V155_1_S2_SR635680903_6.bin', '/bootflash','asr901-universalk9-mz.155-3.S1a.bin','asr903rsp1-universalk9_npe.V155_1_S2_SR635680903_10.bin', 'asr920-universalk9.V155_1S2_SR635680903_6.bin','asr920-universalk9_npe.03.13.00.S.154-3.S-ext.bin', 'asr920-universalk9_npe.03.13.00z.S.154-3.S0z-ext.bin','asr920-universalk9_npe.03.14.02.S.155-1.S2-', 'asr920-universalk9_npe.03.14.02.S.155-1.S2-std.bin','asr920-universalk9_npe.03.15.01.S.155-2.S1-std.bin', 'asr920-universalk9_npe.03.16.01a.S.155-3.S1a-ext.bin','asr920-universalk9_npe.2016-05-10_07.53_saappuku.bin' ,'asr920-universalk9_npe.V155_1_S2_SR635680903_2.bin','asr920-universalk9_npe.V155_1_S2_SR635680903_6.bin',
  'asr920-universalk9_npe.V155_1_S2_SR635680903_6.binn','bootflash');

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-07
    • 1970-01-01
    • 2015-02-26
    • 2011-01-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多