2016-05-04 11 views
-1

So dauert die aktuelle Abfrage, die ich brauche, lange. Wenn ich den Ausführungsplan ausfühle, wird Folgendes angezeigt: Tabelle einfügen (#tempdata), Kosten: 99%. Ich erkannte, dass ich nicht gruppierten Index hinzufügen muss, um die Abfrage schnell auszuführen. Also habe ich diese Codezeile hinzugefügt, aber noch gibt es keinen Unterschied:Hinzufügen von nicht gruppierten Index

create nonclustered index #temp_index 
    on [dbo].#tempData ([class_room]) include ([class_name],[class_floor],[class_building]) 

Dies ist die aktuelle Abfrage ich habe:

IF OBJECT_ID('tempdb..#tempdata') IS NOT NULL DROP TABLE #tempdata 

    SELECT [class_room][class_name],[class_floor],[class_building] 
    INTO #tempdata 
    FROM class_info x 

create nonclustered index #temp_index 
    on [dbo].#tempData ([class_room]) include ([class_name],[class_floor],[class_building]) 

;with cte1 as(
SELECT [class_room][class_name],[class_floor],[class_building] 
FROM #tempdata 
WHERE class_room <> '') 

select * from cte1 
+5

Was führt Sie zu der Annahme, dass das Hinzufügen eines nicht gruppierten Indexes hier hilfreich für die Insert-Performance ist? Wie viele Zeilen setzen Sie in die temporäre Tabelle? Gibt es einen Grund, dass Sie sogar den temporären Tisch benötigen? –

+2

Warum erstellen Sie ein CTE, wenn Sie nur * auswählen? Warum nicht einfach in #tempData aus class_info where class_room <> '' auswählen? Oder warum überhaupt eine temporäre Tabelle erstellen? Was versuchst du zu erreichen? –

+0

@Tom: 9 Millionen Datensätze –

Antwort

1

Das ist ein bisschen zu lang für einen Kommentar.

Können Sie erklären, warum Sie nicht nur diesen Code ausführen?

SELECT [class_room], [class_name], [class_floor], [class_building] 
FROM class_info x 
WHERE class_room <> ''; 

Wenn die Leistung ein Problem ist, ich würde zunächst unnötig befreien empfehlen, sich liest und schreibt - wie eine temporäre Tabelle zu erstellen.

+0

Ich denke, nach einer früheren Frage, die ich gestellt habe, wird das Erstellen eines Indexes für class_room nicht helfen. Recht? Problem ist "Lokalität in Indizes". –

+0

Ja, es wird nicht helfen –

Verwandte Themen