Lors de la jonction entre tables (comme dans les exemples ci-dessous), existe-t-il une différence d'efficacité entre joindre sur les tables ou joindre des sous-requêtes contenant uniquement les colonnes nécessaires? En d'autres termes, y a-t-il une différence d'efficacité entre ces deux tables?Table Join Efficiency Question
SELECT result
FROM result_tbl
JOIN test_tbl USING (test_id)
JOIN sample_tbl USING (sample_id)
JOIN (SELECT request_id
FROM request_tbl
WHERE request_status='A') USING(request_id)
vs
SELECT result
FROM (SELECT result, test_id FROM result_tbl)
JOIN (SELECT test_id, sample_id FROM test_tbl) USING(test_id)
JOIN (SELECT sample_id FROM sample_tbl) USING(sample_id)
JOIN (SELECT request_id
FROM request_tbl
WHERE request_status='A') USING(request_id)
Bonne question - Je vais laisser quelqu'un de mieux répondre, mais mon intuition est que les deux sont à peu près les mêmes en termes d'efficacité, puisque le moteur DB doit rejoindre sur le même nombre de colonnes dans les deux cas au même nombre de lignes (même si moins de champs sont impliqués). Corrige moi si je me trompe! – AndreiM
Mark Brady aurait aimé cette question, mais nooooo .... Les élitistes autour d'ici l'ont effrayé avec leur pouvoir. – TheSoftwareJedi
Fermer cette question n'est plus pertinent car tout le monde sait que SQL Server est meilleur et nous n'aurions même pas à demander cela. – TheSoftwareJedi