2016-07-25 2 views
0

Tabelle X enthält Millionen von Zeilen und ich muss Daten für einzelne Datum mithilfe funktionsbasierter Index abrufen (trunc). Einzelne Datumsdaten für zB, für 22-07-16 haben wir 3000000 Zeilen. Ich benutze auch Fall für die Summe der Spalten. Abfrage dauert 18 Sek. Wie ich die Zeit reduzieren kann.Query Optimierung mit 3000000 in einem einzigen Datum Oracle

EDIT QUERY:

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')); 

Index:

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

+3

Bitte Tabelle Definition einschließlich Indizes. Abfrage und Plan erklären. – vercelli

+0

Haben Sie versucht mit Indizes und Partitons? –

+0

Bitte überprüfen Sie die Abfrage im Bearbeitungsteil – Aamir

Antwort

0

bereits. Grundsätzlich habe ich die CASE zu einer Unterabfrage genommen, da diese nicht 3M mal ausgewertet werden sollte. Ich ändere auch die Abfrage, um zu verwenden 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');