Ich habe eine Abfrage, die mehrere temporäre Tabellen erstellt und dann Daten in sie einfügt. Von dem, was ich verstehe, ist dies eine mögliche Ursache für Table Spool. Wenn ich meinen Ausführungsplan anschaue, wird der Großteil meiner Verarbeitung für Table Spool ausgegeben. Gibt es irgendwelche guten Techniken, um diese Art von Leistungsproblemen zu verbessern? Würde die Verwendung einer Ansicht oder eines CTE mir Vorteile gegenüber den temporären Tabellen bieten?
Ich habe auch bemerkt, dass die Ausgabeliste aus der gleichen temporären Tabelle stammt, wenn ich mit der Maus über die einzelnen Tabellenspools gehe.
Nun, mit den Informationen, die Sie angegeben haben, kann ich nur sagen: Der Abfrageoptimierer hat den bestmöglichen Plan gewählt. Es verwendet Tabellenspools, um die Ausführung zu beschleunigen. Alternativen, die keine Tabellenspools verwenden, wären noch langsamer.
Wie wäre es mit der Anzeige der Abfrage, des Tabellenschemas und der Kardinalität und des Plans?
Aktualisieren
Ich verstehe sicherlich, wenn Sie uns die Anfrage nicht zeigen können. Aber es ist wirklich schwer zu erraten, warum das Spoolen vom Motor bevorzugt wird, ohne irgendwelche Besonderheiten zu kennen. Ich empfehle Ihnen, über Craig Freedmans Blog zu gehen, er ist ein Ingenieur im Query Optimizer Team und hat eine Menge der inneren Abläufe des Optimierers SQL 2005/2008 erklärt. Hier sind einige Einträge, die ich schnell finden konnte, die das Thema des Spoolings in der einen oder anderen Form berühren:
Das SQL-Kundendienstteam hat auch einen interessanten Blog in Ссылка Und 'sqltips' (das Team-Blog der relationalen Engine) hat einige Tipps, wie zum Beispiel Spooloperatoren im Abfrageplan ...
Tags und Links sql sql-server sql-execution-plan