Ich habe gerade unser Data Warehouse auf SQL 2016 aktualisiert. Ich sehe einige wirklich interessante Grafiken im Query Store (ich liebe diese Funktion!). Unten ist das seltsamste Beispiel, das ich je gesehen habe. 22 Pläne für dieselbe Abfrage.
Ich denke über die Leistungsoptimierung meines ETL-Prozesses und die Vor- und Nachteile temporärer Tabellen nach und darüber, wie Sie das Verhalten des Ausführungsplans beeinflussen können.
Mein ETL-Prozess verwendet eine Reihe gespeicherter Prozeduren, die eine Mischung aus Standard- und temporären # -Tabellen als Staging-Tabellen verwenden. Die # -Tabellen werden normalerweise einmal verwendet und dann gelöscht. Einige sind nur ein paar tausend Zeilen. Einige sind Millionen. SSMS weist darauf hin, dass Indizes fehlen, aber würden sie bei kleineren Tabellen genug bewirken, um die Mühe des Hinzufügens wert zu sein? Reichen bessere Statistiken aus?
Ich habe gerade diesen Brent Ozar-Blogbeitrag über Statistiken zu temporären Tabellen und Paul Whites Artikel über temporäre Tabellen in gespeicherten Prozeduren gelesen
Es heißt, dass Statistiken automatisch erstellt werden, wenn die # -Tabelle abgefragt und dann vermutlich vom Optimierer verwendet wird.
Meine Fragen sind: Hat es Sinn oder Nutzen, einen Index für eine # -Tabelle zu erstellen? Und / oder: Lohnt es sich, Statistiken als Schritt in der gespeicherten Prozedur explizit zu aktualisieren, bevor Sie sie in Abfragen verwenden, da sie nur einmal verwendet werden.
Lohnen sich die zusätzlichen Schritte und der Aufwand? Würde dies zu deutlich besseren oder anderen Ausführungsplänen führen?