1. 程式人生 > >sql查詢時使用臨時表的速度問題

sql查詢時使用臨時表的速度問題

做如下查詢

1)不使用臨時表:

select * from 庫存 where 物料編號  in (select 物料編號  from 物料  where 製造廠商='abc');

500條記錄耗時1s

2)使用臨時表

create table #pro(procode nvarchar(30))

insert into #pro select 物料編號  from 物料  where 製造廠商='abc'

select * from 庫存 where 物料編號  in (select procode from #pro);

500條記錄耗時30s

原因:在庫存表裡 物料編號 是索引過的,而#pro 裡的procode 沒有索引,這樣由於結構不同造成查詢耗時增加。

解決:給#pro 加上索引:

create index IX_pro ON #pro(procode)

結果耗時變成3s(索引也需要增加開銷)