2013-06-28 47 views

回答

1

根據我的經驗,當查詢非常複雜以致查詢優化器正在努力想出一個體面的計劃時,它們可能會對有限的情況有所幫助。拆分這樣的查詢並將臨時表中的結果存儲在臨時表中可能會有所幫助。我使用這種策略作爲最後的手段,因爲臨時表很昂貴,對於大型結果集,它們可能非常昂貴。

0

我發現這個外觀極好文章在回答這個問題時非常有用:

  • 臨時表可以作爲簡化的方式非常有用:
    Paul White - temporary tables in stored procedures

    只是從文章強調一些概念將較大的查詢分成較小的部分,使優化程序有更好的機會找到良好的執行計劃,提供有關中間結果集的統計信息

  • 臨時對象可能跨執行緩存儘管明確的創建和刪除語句
  • 統計數據與緩存的臨時對象關聯也緩存

我代表我的,我只想補充一點,如果存儲過程訪問在另一個服務器相同的數據超過一次而且我們的連接速度很慢,將它放到臨時表中可能會很有用。當然,表變量也適用於此目的。