Il est a noter que, si les sous-requetes sont pratiques (ainsi que les DELETE/UPDATE avec des criteres de selections sur plusieurs tables), c'est souvent une <B>mauvaise</B> idée de s'en servir notamment parce que leur implementation consiste souvent a creer une table temporaire pour le resultat de la sous-requete.
La taille de la table temporaire va souvent determiner la vitesse de la requete et helas, les possibilites d'optimisation sont beaucoup plus faible.
Exemple : Trouver les entrees d'une table non presente dans une autre :
SELECT table1.* FROM table1 WHERE table1.id NOT IN (SELECT DISTINCT id FROM table2);
Si l'ecriture est immediate, il suffit de reflechir 3 secondes pour imaginer le resultat si le nombre de lignes dans les tables se compte par milliers.
Il est beaucoup plus utile de faire une jointure comme par exemple :
SELECT table1.* FROM table1 LEFT JOIN table2 USING (id) WHERE table2.id IS NULL;
[^] # Re: MySQL 4.1 disponible!
Posté par Ben A. . En réponse à la dépêche MySQL 4.1 disponible!. Évalué à 7.