SELECT C.* FROM StockToCategory STC
INNER JOIN Category C ON STC.CategoryID = C.CategoryID
WHERE STC.StockID = @StockID
SELECT * FROM Category
WHERE CategoryID IN
(SELECT CategoryID FROM StockToCategory WHERE StockID = @StockID)
Ce qui est considéré comme le correct (syntaxiquement) et approche la plus performante et pourquoi?
La syntaxe dans le dernier exemple me semble plus logique mais mon hypothèse est que le JOIN sera plus rapide. J'ai regardé les plans de requête et n'ai pas pu déchiffrer quoi que ce soit à partir de ceux-ci.
Si les deux peuvent exécuter, les deux sont syntaxiquement correct. Cela me semble être le problème classique des jointures par rapport aux sous-requêtes ... – BoltClock
Bien noté, mais je suis sûr que les experts SQL ici diront que l'un est "plus" correct que l'autre. –
Pourquoi ne pas mettre les deux requêtes dans une fenêtre de requête SSMS et les exécuter ensemble. Assurez-vous de "inclure le plan d'exécution réel" - SSMS affichera quelle requête prend combien de pour cent du temps d'exécution total. Si vous avez 50%: 50%, les deux sont à peu près égaux.Si l'on fait pire, SSMS montrera que très bien –