Bonjour à tous,
je débute en sql et j'ai une requête à exécuter sur une table (SGBD Oracle), mais le problème est que cette requête met plusieurs minutes à s'éxecuter et je voudrais savoir s'il est possible de l'optimiser ou de faire autrement.
(la table contient environ 300.000 lignes).
table X
++++++++++++
id | nom | etat |
++++++++++++
1 | toto | 15
2 | toto | 30
3 | tata | 15
4 | toto | 20
5 | tete | 15
6 | tete | 30
7 | tutu | 15
8 | truc | 20
9 | troc | 18
Je voudrais avoir les "nom" qui ont un "etat" valant 15 mais qui ne doivent pas avoir un "etat" valant 20 ou 30.
Donc ici tata et tutu seulement répondent aux critères.
Voici ma requête :
select nom from X where etat=15 and nom not in (select nom from X where etat = 20 or etat = 30)
Y-a-t-il un moyen de faire autrement en plus performant (en supposant qu'elle marche !! ) ?
merci bcp si vous avez des idées.
Partager