Ich bin auf eine Frage wie diese gestoßen:
SELECT (SELECT COUNT(1) FROM Orders o WHERE i.ItemId = o.ItemId) [C]
FROM Items i
Ich habe es in folgendes geändert
;WITH cte_count
AS
(
SELECT COUNT(1) c, OrderId FROM Orders Group By ItemId
)
SELECT a.c [Count], i.Name
FROM Items i
INNER JOIN cte_count c ON (c.ItemId = i.ItemId)
Der Ausführungsplan für beide ist jedoch der gleiche wie unten gezeigt:
Ebenso wurde eine andere Abfrage ausgewählt TOP 1 Order By Id
. Ich habe versucht, dieses zu verschieben. CROSS APPLY
Aber auch für dieses habe ich die gleichen Ausführungspläne.
Natürlich gab es andere Verknüpfungen und Spalten in der Abfrage.
In meinem Dilemma geht es um Nutzen und Vorteile der Verwendung von CROSS APPLY
und CTE
. Gibt es welche oder nur exotische?