[SQL] jointure entre 5 table

jointure entre 5 table [SQL] - SQL/NoSQL - Programmation

Marsh Posté le 20-09-2002 à 09:17:16    

je dois faire une jointure entre 5 tables... il se trouve que la requete est bonne mais que le serveur mysql suis pas (Lag a fond, alors qu'avec le reste ca passe..)
 
je me demandais, si il y avait moyen de préciser quelle jointure doit etre effectuée en premier (car une des jointure reduit enormement la taille du resultat)

Reply

Marsh Posté le 20-09-2002 à 09:17:16   

Reply

Marsh Posté le 20-09-2002 à 09:57:57    

pour le left join tu fais d'abord un select, puis les jointures dans l'ordre de la requête.
 
donne ta query qu'on jette un oeil ;)


---------------
La musique c'est comme la bouffe, tu te souviens du restaurant dans lequel t'as bien mangé 20 ans plus tôt, mais pas du sandwich d'il y a 5 minutes :o - Plugin pour winamp ©Harkonnen : http://harko.free.fr/soft
Reply

Marsh Posté le 20-09-2002 à 11:36:52    

Je peux te donner la règle que je suis avec Oracle, par exemple tu as deux tables:
 
une table A avec 10,000 lignes  
une table B avec 1,000,000 lignes
 
L'ordre de ta jointure doit être de B -> A, donc de joindre la table plus volumineuse avec la moins volumineuse:
select ...
from A,B
where B.id_B = A.id_A
 
Pour ta question sur : est-il possible de spécifier quelle jointure doit être effectuée en premier,... avec Oracle c'est très possible avec les Hints (/*+ORDERED USE_NL(A) */)...avec mysql il y a également des Hints, mais je n'est pas souvenir d'un hint qui permettait de faire ce que tu veux. sinon va voir vers ce lien :
http://www.mysql.com/doc/en/SELECT.html
 
Sinon, dans tous les cas, assure toi bien que les colonnes que tu utilises pour réaliser tes jointures sont indexées,ou sont les clés primaires des tables. Il est moins couteux de faire un parcours d'index (index lookup) q'un parcours total ) de ta table (full table scan).

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed