quelqu'un peut-il me expliquer pourquoi cette requête prend 13 secondes:T-SQL: Pourquoi ma requête est-elle plus rapide si j'utilise une variable de table?
SELECT Table1.Location, Table2.SID, Table2.CID, Table1.VID, COUNT(*)
FROM Table1 INNER JOIN
Table2 AS ON Table1.TID = Table2.TID
WHERE Table1.Last = Table2.Last
GROUP BY Table1.Location, Table2.SID, Table2.CID, Table1.VID
Et celui-ci seulement 1 seconde:
DECLARE @Test TABLE (Location INT, SID INT, CID INT, VID INT)
INSERT INTO @Test
SELECT Table1.Location, Table2.SID, Table2.CID, Table1.VID
FROM Table1 INNER JOIN
Table2 AS ON Table1.TID = Table2.TID
WHERE Table1.Last = Table2.Last
SELECT Location, SID, CID, VID, COUNT(*)
FROM @Test
GROUP BY Location, SID, CID, VID
Lorsque je retire le GROUP BY de la première requête, il faut seulement 1 seconde trop . J'essaie aussi d'écrire une sous-sélection et de grouper le résultat, mais cela prend aussi 13 secondes. Je ne comprends pas cela.
Ok, merci. Je pense que le GROUP BY est exécuté après le WHERE, de sorte que la requête regroupe également le jeu de résultats plus petit. – Torben
SQL pourrait le faire, il ne pouvait pas non plus. Plus il y a de «conjectures» à faire, plus il y a de chances qu'il se trompe. Par conséquent, indexer, ou filtrer les résultats au début peut l'aider dans des situations comme celle-ci. Comme l'a dit Jim G, comparez les plans d'exécution, cela vous dira exactement quelles sont les différences. –