Wie um zu überprüfen, ob der index verwendet wird oder nicht in Oracle

SELECT * 
FROM   (SELECT TEMP.*, 
               ROWNUM RNUM 
        FROM   (SELECT entry_guid 
                FROM   alertdevtest.ENTRY 
                WHERE  Upper(alert_name) = 'alertname' 
                       AND user_guid = 'AlertProductClientTest' 
                       AND product_code = '-101' 
                       AND status_code != 13) TEMP 
        WHERE  ROWNUM <= 2500) 
WHERE  rnum >= 0; 

SELECT * 
FROM   (SELECT TEMP.*, 
               ROWNUM RNUM 
        FROM   (SELECT entry_guid 
                FROM   alertdevtest.ENTRY 
                WHERE  Upper(alert_name) = 'alertname' 
                       AND user_guid = 'AlertProductClientTest' 
                       AND product_code = '-101' 
                       AND status_code != 13 
                       AND product_view IN ( 'PView' )) TEMP 
        WHERE  ROWNUM <= 2500) 
WHERE  rnum >= 0; 

Bin mit oben genannten Fragen und zu sehen, Leistungsabfall in der zweiten Abfrage ist im Vergleich zu den ersten. Der einzige Unterschied ist der zusätzliche filter UND PRODUCT_VIEW IN ('PView') in der zweiten Abfrage. Aber es hat index auf die Spalte. Bitte lassen Sie mich wissen, was kann der Grund für Leistungseinbrüche und wie kann ich überprüfen, ob ein index verwendet wird oder nicht? Bin mit Oracle SQL developer und versucht die Kontrolle zu erklären plan, aber konnte nicht viel details.

  • Können Sie PRODUCT_VIEW = 'PView' statt PRODUCT_VIEW IN ('PView')? Es wird Ihnen eine bessere Leistung. Auch können Sie uns Ihren plan erklären?
  • Ich habe zu verwenden, als Suche kann mit mehreren string-Werte. Ich bin nicht hochladen, ein Bild zu erklären, hier plan. Für die erste Abfrage sehe 2 Teile, vor allem,
InformationsquelleAutor Rajesh Bhat | 2015-09-21
Schreibe einen Kommentar