Oracle DBMS_LOB.INSTR und Leistung ENTHÄLT
Ist es keine performance-Unterschied zwischen dbms_lob.instr und enthält oder mache ich etwas falsch?
Hier ist mein code
SELECT DISTINCT ha.HRE_A_ID, ha.HRE_A_FIRSTNAME, ha.HRE_A_SURNAME, ha.HRE_A_CITY,
ha.HRE_A_EMAIL, ha.HRE_A_PHONE_MOBIL
FROM HRE_APPLICANT ha WHERE ha.HRE_A_STATUS_ID=1 AND ha.HRE_A_CURRENT_STATUS_ID <= '7'
AND ((DBMS_LOB.INSTR(hre_a_for_search,'java') > 0)
OR EXISTS
(SELECT 1 FROM gob_attachment, gob_table WHERE hre_a_id=gob_a_record_id
AND gob_a_table_id = gob_t_id AND gob_t_code = 'HRE_APPLICANT'
AND CONTAINS (gob_a_document, 'java') > 0))
ORDER BY HRE_A_SURNAME
und letzten beiden Zeilen geändert für die Verwendung von instr
AND dbms_lob.instr(gob_a_document,utl_raw.cast_to_raw('java')) <> 0))
ORDER BY HRE_A_SURNAME
Mein problem ist, dass ich gerne verwenden instr anstelle von enthält, aber instr scheint mir viel langsamer dann enthält.
Du musst angemeldet sein, um einen Kommentar abzugeben.
CONTAINS
wird die Verwendung einer Oracle-Text-index, so würde man erwarten, dass es viel effizienter als so etwas wieINSTR
hat, Lesen Sie die gesamte CLOB zur Laufzeit. Wenn man zum generieren der Abfrage-Pläne für die beiden Aussagen, erwarte ich, dass Sie sehen, dass der Unterschied im Zusammenhang mit der Oracle Text index.Warum wollen Sie verwenden
INSTR
eher alsCONTAINS
?CONTAINS
Abfrage?