Oracle 8 : Index + IS NULL
Bonjour,
J'ai la requête suivante dans une procédure stockée :
Code:
1 2 3 4 5 6 7 8 9 10 11 12
|
SELECT DISTINCT nsiret
INTO Ora_nsiret
FROM dpa_marche_hist_acompte
WHERE (idenos = Ora_idenos OR (idenos IS NULL AND Ora_idenos IS NULL))
AND (nomht1 = Ora_nomht1 OR (nomht1 IS NULL AND Ora_nomht1 IS NULL))
AND (nomhl1 = Ora_nomhl1 OR (nomhl1 IS NULL AND Ora_nomhl1 IS NULL))
AND (nstra = Ora_nstra OR (nstra IS NULL AND Ora_nstra IS NULL))
AND (eaetex = Ora_eaetex OR (eaetex IS NULL AND Ora_eaetex IS NULL))
AND (dexemm = Ora_dexemm OR (dexemm IS NULL AND Ora_dexemm IS NULL))
AND (cnapai = Ora_cnapai OR (cnapai IS NULL AND Ora_cnapai IS NULL))
AND (ctatva = Ora_ctatva OR (ctatva IS NULL AND Ora_ctatva IS NULL)); |
Un index existe sur les 8 colonnes utilisées dans la clause WHERE.
J'ai plusieurs requêtes de ce type avec la même clause WHERE.
Il me semble que l'index n'est pas utilisé si la clause IS NULL est choisie.
Y a t il un moyen d'optimiser cela?
Merci.
Execution requete avec parametres sous SQL*Plus (Oracle 8)
Bonjour,
J'ai la requête suivante :
Code:
1 2 3 4 5 6 7 8 9 10 11
|
SELECT DISTINCT numar
FROM dpa_marche_hist_acompte
WHERE (idenos = Ora_idenos OR (idenos IS NULL AND Ora_idenos IS NULL))
AND (nomht1 = Ora_nomht1 OR (nomht1 IS NULL AND Ora_nomht1 IS NULL))
AND (nomhl1 = Ora_nomhl1 OR (nomhl1 IS NULL AND Ora_nomhl1 IS NULL))
AND (nstra = Ora_nstra OR (nstra IS NULL AND Ora_nstra IS NULL))
AND (eaetex = Ora_eaetex OR (eaetex IS NULL AND Ora_eaetex IS NULL))
AND (dexemm = Ora_dexemm OR (dexemm IS NULL AND Ora_dexemm IS NULL))
AND (cnapai = Ora_cnapai OR (cnapai IS NULL AND Ora_cnapai IS NULL))
AND (ctatva = Ora_ctatva OR (ctatva IS NULL AND Ora_ctatva IS NULL)); |
Comment faire pour ne pas remplacer directement mes variables par des valeurs pour exécuter cette requête sous SQL*Plus?
En déclarant des variables, est-ce que ca le fait?
Merci.