Ich habe eine Abfrage, die Teil einer SP, die ziemlich regelmäßig ausgeführt wird, und die Abfrage dauerte eine Weile, um auszuführen, so dass ich beschlossen, einen Blick auf sie haben. Ich habe einen Autotrace für die Abfrage durchgeführt und dies war die Ausführung Plan zurückgegeben [ aufgrund der übermäßigen Größe in pastebin eingefügt ]
Ich fügte Indizes zu den Tabellen hinzu, auf die ein vollständiger Tabellenzugriff erfolgte, und führte die Abfrage aus. Die Abfrageleistung war schlechter als vorher, trotz der die Kosten sind deutlich niedriger .
Warum ist das so, kann jemand Licht in diese Angelegenheit bringen?
Die Datenbank ist ein Oracle 10gR2 ( Release 10.2.0.1.0 ).
Die folgende Abfrage wird ausgeführt
SELECT DISTINCT CAC_FLEX_03, CAC_FLEX_04
FROM PCOM_CUST_PRACTICE_INFO A,
PGIM_ZIP_CODES C,
PGIM_PROD_TARIFF_DATA B,
PCOM_CODES_APPL_CODES D
WHERE A.PCPI_CUST_CODE IN ('002023', '002025')
AND C.ZC_ZIP_CODE = A.PCPI_PIN_CODE
AND C.ZC_CITY_CODE = A.PCPI_CITY
AND C.ZC_COUNTY_CODE = A.PCPI_COUNTY
AND C.ZC_STATE_CODE = A.PCPI_STATE
AND B.PTD_CVR_CODE = 'TF-001'
AND B.PTD_VALUE_SET2 = A.PCPI_STATE
AND B.PTD_VALUE_SET4 = A.PCPI_COUNTY
AND B.PTD_VALUE_SET5 = D.CAC_FLEX_03
AND D.CAC_FLEX_04 IS NOT NULL
AND ZC_STATE_CODE =
(SELECT POL_FLEX_04
FROM PGIT_POLICY
WHERE POL_SYS_ID = 541332)
AND B.PTD_VALUE_SET3 =
(SELECT POL_FLEX_01
FROM PGIT_POLICY
WHERE POL_SYS_ID = 541332)
AND CAC_TYPE = 'TERR-CODE'
AND CAC_FLEX_03 = 0;