很慢的請求,在我的MS SQL Server 2008中,我創建了一個臨時表是這樣的:對臨時表
create table #test
(
A varchar(50),
B int,
)
insert into #test select 'a',45
insert into #test select 'b',587
insert into #test select 'a',4
insert into #test select 'b',58
現在下面的請求採取永遠
select A,SUM(B) from #test group by A -- takes 4 seconds to execute
,而下面的請求是瞬時的
select * from #test order by A
select SUM(B) from #test
所有其他請求(包括巨大的請求),不使用臨時表是ru nning很好,而每個使用臨時表的請求似乎都會出現相同的性能問題。這些請求通常都會在昨天快速運行,我想不出任何可能會發生的異常情況。
我檢查了我的tempdb中使用spaceused(70MB解脫出來的85 MB)
不夠豐滿,我也檢索到的執行計劃:
這是什麼原因這表現非常糟糕?有什麼我應該解決這個問題?
如果您將A設置爲主鍵,則會自動在該表上設置一個「集羣索引」。這可能是你最好的選擇。它不僅會刪除排序,而且還會用Clustered Index掃描替換表掃描(並大幅提高性能)。 – 2010-10-29 15:53:22