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
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? –
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? –
@Tom: 9 Millionen Datensätze –