SELECT MAX(verification_id)
FROM VERIFICATION_TABLE
WHERE head = 687422
AND mbr = 23102
AND RTRIM(LTRIM(lname)) = '.iq bzw'
AND TO_CHAR(dob,'MM/DD/YYYY')= '08/10/2004'
AND system_code = 'M';
Die Ausführung dieser Abfrage dauert 153 Sekunden. Es gibt Millionen von Zeilen in VERIFICATION_TABLE
.
Ich denke, die Abfrage dauert wegen der Funktionen in der Where-Klausel sehr lange. Allerdings muss ich ltrim rtrim auf die Spalten zu tun und auch Datum hat in abgestimmt werden MM/DD/YYYY
Format. Wie kann ich diese Abfrage optimieren?
Erklären Sie den Plan:
SELECT STATEMENT, GOAL = ALL_ROWS 80604 1 59
SORT AGGREGATE 1 59
TABLE ACCESS FULL P181 VERIFICATION_TABLE 80604 1 59
Primärschlüssel:
VRFTN_PK Primary VERIFICATION_ID
Indizes:
N_VRFTN_IDX2 head, mbr, dob, lname, verification_id
N_VRFTN_IDX3 last_update_date
N_VRFTN_IDX4 mbr, lname, dob, verification_id
N_VRFTN_IDX4 verification_id
Obwohl, in der erklären Plan sehe ich nicht Indizes/Primärschlüssel verwendet werden. ist das das Problem?