Bonjour à tous,

Je ne poste pas cette discussion dans le débat concernant les jointures car il parle plus des différences de syntaxes.

Ma question tourne plus autour des performances théoriques de comment on ordonne ses jointures.

Si on prend l'exemple d'une structure classique :
- Table commande : ORDER
- Table ligne de commande : ORDER_L

Donc avec plusieurs lignes de commandes par commande.

Même si (selon le SGBD) l'optimisateur est censé faire le taff je n'ai jamais sû s'il fallait rédiger sa requête :

Type 1 :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
 
SELECT
	ORDER.ID_ORDER,
	ORDER.TITLE,
	ORDER_L.PRODUCT,
	ORDER_L.QUANTITY
 
FROM ORDER
 
JOIN ORDER_L ON
	ORDER_L.ID_ORDER = ORDER.ID_ORDER
 
WHERE ORDER.ID_ORDER = '424242'

Ou type 2 :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
SELECT
	ORDER.ID_ORDER,
	ORDER.TITLE,
	ORDER_L.PRODUCT,
	ORDER_L.QUANTITY
 
FROM ORDER_L
 
JOIN ORDER ON
	ORDER_L.ID_ORDER = ORDER.ID_ORDER
 
WHERE ORDER.ID_ORDER = '424242'
J'ai toujours choisis par défaut le type 1 , parce qu'intuitivement je le trouve plus logique.

Je ne parle pas des cas d'exceptions ou on tombe sur une commande qui n'a pas de ligne ( de toute façon je n'ai pas mis de jointure en outer dans mon exemple).

Mais de votre expérience : faut-il partir de la table qui renverra "n" records pour 1 ID et joindre vers la table qui n'a qu'un record pour un ID ou l'inverse ?