2016-05-04 13 views
-2

現在のクエリは3時間かかり、実現するためにはクラスタ化されていないインデックスを追加する必要があります。だから私はこのコード行を追加したが、まだそのは結果なしで大規模な時間を割い:SSMSのクイック検索クエリのために一時テーブルにクラスタ化されていないインデックスを追加する

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 
+1

実際の実行計画を掲載することはできますか?どの部分に時間がかかりますか? tempdataまたはselect?に挿入しますか? – SQLChao

+0

実行コストは テーブル挿入(#tempdata)、コスト:99% –

+0

実行計画ごとに一時テーブルへの挿入に時間がかかります。しかし、私はちょうどその部分を実行するとすぐにクエリを実行する –

答えて

1

#tempdata最初に作成してください。

create table #tempdata(
tempid int identity(1,1) not null, --to protect against duplicates 
[class_room] varchar(50), 
[class_name] varchar(50), 
[class_floor] varchar(50), 
[class_building] varchar(50), 
primary key (class_room, tempid), -- test this 
unique (class_name,class_floor,class_building, tempid) -- or that 
) 
+0

しかし、そのような適切なテーブルを作成しています。 –

+0

名前の前に '# '記号を見てください。それは一時テーブルを意味します。セッションの終了時に自動的に削除されます。それ以外の点では、通常の表として動作します。 –

関連する問題