Ich habe eine ziemlich komplexe TSQL SELECT Abfrage, die mehrere Joins dauert, die für ca. 8 Sekunden ausgeführt wird und ca. 300K Datensätze zurückgibt. Welches ist derzeit akzeptabel? Aber ich muss die Ergebnisse dieser Abfrage später mehrmals wiederverwenden, daher füge ich Ergebnisse der Abfrage in eine temporäre Tabelle ein. Die Tabelle wird im Voraus mit Spalten erstellt, die der Ausgabe der SELECT-Abfrage entsprechen. Aber sobald ich INSERT INTO ... SELECT mache - die Ausführungszeit verdoppelt sich auf mehr als 20 Sekunden! Ausführungspläne zeigen, dass 46% der Abfragekosten zu "Tabellen einfügen" und 38% zu Tabellenspool (Eager Spool) gehen.(TSQL) INSERT Verdoppelungszeit der Abfrage
Irgendeine Idee, warum das passiert und wie man es beschleunigt?
Danke!
Sie verwenden die "Tempdb", wenn Sie die Einfügung in die temporäre Tabelle - das dauert auch Ressourcen ... – Oded
Ich verstehe das, aber ich muss dies beschleunigen. Ich habe auch SELECT INTO anstelle von INSERT INTO versucht - und das erhöhte Zeit nur 2 Sekunden - was viel schneller ist ... Seltsam. –
Haben Sie einen Index für die temporäre Tabelle deklariert? Fügen Sie die Datensätze der Reihe nach ein? – Oded