Ich versuche, die Geschwindigkeit einer Abfrage zu optimieren, die einen redundanten Abfrageblock verwendet. Ich versuche, eine Reihe weise SQL Server 2008 mit der Abfrage unten beizutreten.Zurücksetzen der ausgewählten Unterabfrage/Ergebnis
Select * from
(<complex subquery>) cq
join table1 t1 on (cq.id=t1.id)
union
Select * from
<complex subquery> cq
join table2 t2 on (cq.id=t2.id)
Die <complex subquery>
ist genau das gleiche auf beiden Gewerkschafts Sub-Abfrage Stücke außer wir es mit mehreren verschiedenen Tabellen verknüpfen müssen die gleichen Spaltendaten zu erhalten.
Gibt es eine Möglichkeit, die Abfrage entweder neu schreiben, um es schneller zu machen, ohne eine temporäre Tabelle zum Zwischenspeichern von Ergebnissen zu verwenden?
CTE ist vielleicht? Google dafür und sehen Sie, ob es Ihren Bedürfnissen entspricht. – leppie
@leppie - CTEs werden die Ergebnisse im Allgemeinen nicht ohne die Verwendung eines Planführers, wie hier beschrieben, materialisieren http://explainextended.com/2009/05/28/generating-xml-in-subqueries/ –