Bonjour,
A chaque fois que j'écris une jointure, je me demande si l'ordre dans lequel on écrit celle-ci a une incidence sur les performances de la requête.

Soit A et B deux tables :
A(idA, TypeA, ...)
B(idB, FK_idA, ...)

Considérons que la table B a énormément plus de lignes que la table A.

Les deux écritures ci-dessous sont elles identiques ou pas au niveau de la performance de la requête ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
SELECT A.TypeA, B.*
FROM B
INNER JOIN A ON A.idA = B.FK_idA
 
SELECT A.TypeA, B.*
FROM B
INNER JOIN A ON B.FK_idA = A.idA
Par ailleurs, est-ce que ça change quelque chose si j'inverse la jointure ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
SELECT A.TypeA, B.*
FROM A
INNER JOIN B ON A.idA = B.FK_idA
 
SELECT A.TypeA, B.*
FROM A
INNER JOIN B ON B.FK_idA = A.idA
Autrement dit :
- Vaut-il mieux mettre la plus petite table dans le FROM et la plus grosse dans le JOIN ou l'inverse, ou on s'en fout ?
- Vaut-il mieux mettre la plus petite table en premier dans le ON ou l'inverse ou on s'en fout ?