現在のクエリは実行に時間がかかります。実行計画を実行すると、表挿入(#tempdata)、コスト:99%が表示されます。クエリを高速に実行するために、クラスタ化されていないインデックスを追加する必要があることに気付きました。だから私はこのコード行を追加したが、それでも差がない:クラスタ化されていないインデックスを追加する
create nonclustered index #temp_index
on [dbo].#tempData ([class_room]) include ([class_name],[class_floor],[class_building])
これは私が持っている現在のクエリです:
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
クラスタ化されていないインデックスを追加すると、ここで挿入パフォーマンスが向上すると思われます。テンポラリテーブルにいくつの行を入れていますか?一時テーブルが必要な理由がありますか? –
CTEを*から選択するのはなぜですか?なぜclass_infoから#tempDataを選択するのではなく、class_room <> ''ですか?または、なぜテンポラリテーブルを作成するのですか?あなたは何を達成しようとしていますか? –
@Tom:900万件のレコード –