Bonjour,
Je cherche à éviter l'utilisation du mot clé IN ds mes requetes sql.
Voila pas exemple une des mes requetes que je voudrais modifier:
J'ai un index sur la colonne matricule
Oracle me converti ca en une suite de 'OR' et me lance un full scan table.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 select m.nom from TabMatricule m where m.matricule IN ('1895008345','1397104117','8194700690')
Comment eviter ca? Je voudrais que pour chaque matricule recherché, oracle fasse une recherche par index.
La difficulté est dans le fait que je ne connais pas le nombre de matricules que mes applis clients vont m'envoyer. Il est probable que je recoive des traitements avec 2000 matricules en parametre. Je ne peux donc pas faire ca par exemple:
Avez vous une idée pour résoudre ce problème?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 select m.nom from TabMatricule m where m.matricule IN ('1895008345') UNION ALL select m.nom from TabMatricule m where m.matricule IN ('1397104117') UNION ALL select m.nom from TabMatricule m where m.matricule IN ('8194700690')
Bien cordialement
X.
Partager