T-SQL Insert - Die Variable Select in Table ist sehr langsam

8

Ich habe eine Tabellenvariable und füge einige Werte mit der Anweisung "Into Into - Select" ein. Die Auswahl ist eine Kombination aus wenigen Joins und wenn sie separat ausgeführt wird, dauert es 3 Sekunden. Das Problem ist, dass der gesamte Code 3-4 Minuten benötigt, um ausgeführt zu werden. Ich frage mich, gibt es einen bestimmten Grund dafür.

Dies ist die Deklaration meiner Tabellenvariable:

%Vor%

Ich habe eine andere Tabellenvariable, die ich mit einigen Daten initialisiere, und dies ist ihre Struktur:

%Vor%

und der folgende Code ist meine Problemstellung (einfügen in - select):

%Vor%

Wie ich schon sagte, wenn ich die Einfügezeile kommentiere, dauert die Abfrage 3 Sekunden, sonst - eine sehr lange Zeit.

EDIT: Hier ist mein Ausführungsplan - die meisten Kosten sind Tabellenscan, aber warum dauert es so viel Zeit, wenn Einfügung gemacht wird, und geschieht schnell ohne es?

Das Folgende ist meine neue Inline-Funktion:

%Vor%

Ich laufe wieder langsam. Irgendwelche Ideen, wie man es optimiert?

    
gotqn 05.06.2012, 14:46
quelle

1 Antwort

11

Abfragen, die in Tabellenvariablen eingefügt werden, können keinen parallelen Plan haben.

Verwenden Sie stattdessen eine Tabelle #temp , damit SELECT parallelisiert werden kann.

    
Martin Smith 05.06.2012, 14:57
quelle

Tags und Links