jointure ou requete imbriquée ? - SQL/NoSQL - Programmation
Marsh Posté le 01-07-2003 à 23:51:04
art_dupond a écrit : |
solution 2.
Règle générale : si t'as une BDD douteuse (au hasard MySQL) prends systématiquement le 2. Sinon, prends le plus lisible, l'optimiseur fera la tranformation qu'il voudra (inlining et beta-reduction pour passer de 2 à 1 par ex.) si c'est pas optimal.
et fait gaffe à pas oublier les index sur les colones que tu joins.
Marsh Posté le 02-07-2003 à 15:25:48
Euh... L'optimiseur est bien, mais faut pas pousser non plus, la première solution, je vois ça dans du code, je quite l'éditeur et je del le fichier, ça sera plus rapide de repartir de rien que d'un code aussi propre que des chiottes publiques.
Sous Oralce
Exemple :
|
=> La jointure est plus rapide que chacune des deux requête à la suite. Alors je te parle même pas de la solution batarde de sous-requête...
Marsh Posté le 01-07-2003 à 23:40:07
yop,
j'ai par exemple une table avec disons 1000 éléments (100 joueurs et 10 tournois)
[g]joueur[/g] [g]point[/g] [g]tournoi[/g]
...
alphonse 250 T1
...
josianne 75 T2
...
josianne 854 T1
...
alphonse 50 T2
...
un joueur a participé à plusieurs tournois.
On veut les tournois où josianne à eu plus de points qu'alphonse.
solution 1:
select * from table "t" where joueur='josianne' and points > (select points from table where joueur='alphonse' and tournoi=t.tournoi);
solution 2:
select * from table "t", table where t.joueur='josianne' and joueur='alphonse' and t.tournoi=tournoi and t.points > points;
autre solution ?
quelle est la best solution ?
en fait, je me dis que pour la jointure il fait un produit cartésien avant et du coup ca me semble tres lourd.
Mais bon je connais pas bien et y a surement des subtilités qui doivent m'échapper, du genre qu'il ferait peut etre le produit cartésien seulement après avoir isolé les lignes 'josianne' et les lignes 'alphonse'.
enfin j'en sais rien c'est pour ca que je demande
en fait, plus généralement, je voudrais savoir s'il vaut mieux faire l'un ou l'autre, ou s'il y a des cas plus favorables pour une solution ou l'autre.
merci
je suis neuneu ! n'est-ce pas ?
---------------
oui oui