0
我在存儲過程中有一個臨時表導致查詢超時,因爲它正在做一個複雜的計算。我想在使用它之後放棄它。它像存儲過程臨時表導致超時錯誤
DECLARE @SecondTable TABLE
創造了現在,我可以使用
drop @SecondTable
其實我不得不使用
drop #SecondTable
是否有人知道爲什麼不降呢?
我在存儲過程中有一個臨時表導致查詢超時,因爲它正在做一個複雜的計算。我想在使用它之後放棄它。它像存儲過程臨時表導致超時錯誤
DECLARE @SecondTable TABLE
創造了現在,我可以使用
drop @SecondTable
其實我不得不使用
drop #SecondTable
是否有人知道爲什麼不降呢?
我決不是一個SQL大師,但爲什麼這個下降甚至是必要的?
如果它是一個表變量,一旦存儲過程退出,它將不再存在。
我真的很驚訝,DROP #SecondTable
不會錯誤在你身上;因爲你在那裏放置臨時表;不是表變量。
編輯
所以根據您的意見,我更新如下:
1)如果你使用一個表變量(@SecondTable
);那麼不需要下降。 SQL Server將爲您處理此問題。
2.)聽起來你的超時是由使用表的計算引起的,而不是表本身的丟失。在這種情況下;我可能會推薦使用臨時表而不是表變量;因爲臨時表會讓你添加索引等來提高性能;而一個表變量不會。如果這還不夠,您可能需要增加查詢的超時時間。
3.)在SQL中;一個表變量(@SecondTable
)和臨時表(#SecondTable
)是兩個完全不同的東西。我會參考Table Variables和Temporary Tables
的MSDN文檔,它會在存儲過程之後被刪除。然而,在商店proc本身多次使用臨時表導致超時。我的問題與Drop #SecondTable和Drop @SecondTable的區別是什麼?我沒有得到你正在做什麼的臨時變量.. – hussian