Oracle DBMS_LOB.INSTR et CONTIENT de la performance
Est-il une différence de performance entre dbms_lob.instr et contient ou suis-je en train de faire quelque chose de mal?
Voici mon 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
et les deux dernières lignes de changé pour l'utilisation de l'instrument
AND dbms_lob.instr(gob_a_document,utl_raw.cast_to_raw('java')) <> 0))
ORDER BY HRE_A_SURNAME
Mon problème est que je voudrais utiliser l'instrument au lieu de les contient, mais instr me semble beaucoup plus lent que le contient.
Vous devez vous connecter pour publier un commentaire.
CONTAINS
allons utiliser un Oracle de l'index de Texte de sorte que vous vous attendez à être beaucoup plus efficace que quelque chose commeINSTR
qui a pour lire l'intégralité du CLOB au moment de l'exécution. Si vous produisez les plans de requêtes pour les deux états, je pense que vous verrez que la différence est liée à l'Oracle de l'index de Texte.Pourquoi voulez-vous utiliser
INSTR
plutôt queCONTAINS
?CONTAINS
requête?