Administrateur PHPfrance |
3088 Messages
01 janv. 2007, 05:41
@Ajoloca: je déconseille cette méthode dans la mesure où elle crée une table temporaire et potentiellement 2 (une pour la table dérivée et une pour évaluer le DISTINCT de la requête extérieur). La solution que je propose offrira systématiquement de meilleures performances dans la mesure où le résultat est intégralement calculé à partir de l'index.
Si je devais établir une échelle de performances, je dirais que la solution des jointures multiples est
excellente, la version en sous-requête
mauvaise et la version PHP
catastrophique (je dis ça en toute amitié hein

). Maintenant, si tu as 10 à 100 enregistrements dans ta table on s'en fiche, mais si tu en as plusieurs milliers alors tu vas rapidement comprendre ce que je veux dire
Edit: j'avais lu le post d'
Ajoloca en diagonale, à priori ce que tu veux faire ressemble plutôt à (que je continue à déconseiller mais dont les performances pourraient passer de "mauvaises" à "pas bonnes"

)
Code : Tout sélectionner
SELECT lotid, COUNT(DISTINCT cat) AS cnt
FROM lot
GROUP BY lotid
HAVING cnt = (SELECT COUNT(DISTINCT cat) FROM lot)
Modifié en dernier par
Hubert Roksor le 01 janv. 2007, 05:49, modifié 1 fois.