Bonjour,
J ai besoin d ecrire une requête SQL sur une grosse table, avec des jointures sur d autres tables de taille plus réduite.
Je vois a priori 2 possibilités :
Soit je limite ma recherche a ma seule grosse table, et je sollicite ensuite mes petites tables avec des subselect dans mon select.
Exemple :
select (select tmp1.libelle1 from MaPetiteTable tmp1 where tmp1.id=t.id) "Libellé 1",
(select tmp2.libelle2 from MaTableAMoi tmp2 where tmp2.id=t.id) "Libellé 2",
(select tmp3.libelle3 from MaTable tmp3 where tmp3.id=t.id) "Libellé 3",
(select tmp4.libelle4 from MyTinyTable tmp4 where tmp4.id=t.id) "Libellé 4"
from MaGrosseTable t
where t.pouet='turlututu';
Soit je fais une bonne grosse jointure entre tout ca, au risque de faire des table acessfull, mais y a pas de subselect
select tmp1.libelle1 "Libellé 1",
tmp2.libelle2 "Libellé 2",
tmp3.libelle3 "Libellé 3",
tmp4.libelle4 "Libellé 4"
from MaGrosseTable t,
MaPetiteTable tmp1,
MaTableAMoi tmp2,
MaTable tmp3,
MyTinyTable tmp4
where tmp1.id=t.id and
tmp2.id=t.id and
tmp3.id=t.id and
tmp4.id=t.id and
t.pouet='turlututu';
Y a une solution meilleure que l autre ou il vaut mieux etre empirique, à savoir que la meilleure solution est celle qui retourne le résultat le plus vite ?
Est-ce que la meilleure solution peut dépendre du nombre de lignes retournées via la wherclause pouet ?
Partager