爲什麼在存儲過程中使用臨時表來返回大型結果集。這對性能有什麼幫助?有沒有一個例子可能是幾個表的連接返回一大組數據以及臨時表如何可以幫助在存儲過程中執行此查詢?爲什麼在大型結果集中使用臨時表爲什麼要增加
1
A
回答
1
根據我的經驗,當查詢非常複雜以致查詢優化器正在努力想出一個體面的計劃時,它們可能會對有限的情況有所幫助。拆分這樣的查詢並將臨時表中的結果存儲在臨時表中可能會有所幫助。我使用這種策略作爲最後的手段,因爲臨時表很昂貴,對於大型結果集,它們可能非常昂貴。
0
我發現這個外觀極好文章在回答這個問題時非常有用:
- 臨時表可以作爲簡化的方式非常有用:
Paul White - temporary tables in stored procedures只是從文章強調一些概念將較大的查詢分成較小的部分,使優化程序有更好的機會找到良好的執行計劃,提供有關中間結果集的統計信息
- 臨時對象可能跨執行緩存儘管明確的創建和刪除語句
- 統計數據與緩存的臨時對象關聯也緩存
我代表我的,我只想補充一點,如果存儲過程訪問在另一個服務器相同的數據超過一次而且我們的連接速度很慢,將它放到臨時表中可能會很有用。當然,表變量也適用於此目的。
相關問題
- 1. 臨時表發送大型結果集(什麼是最差的臨時表或發送巨大的結果集)
- 2. 爲什麼要裁剪結果集?
- 3. 爲什麼結果集如此之大?
- 4. 爲什麼比使用臨時表
- 5. 爲什麼要在創建臨時表之後使用EXEC?
- 6. 爲什麼我的類型數據集不像臨時表?
- 7. 爲什麼結果集爲空
- 8. 爲什麼oracle臨時越來越大?
- 9. 爲什麼在linqtosql中獲取空結果集需要這麼長時間?
- 10. 爲什麼要加入限制我的結果集?
- 11. 爲什麼我要在結果集中獲取Javassist對象?
- 12. 爲什麼setSkew增加文字大小?
- 13. 爲什麼文字大小不增加?
- 14. 爲什麼會放大增加延遲?
- 15. 蘋果爲什麼不增加?
- 16. 爲什麼ezSQL返回空結果集
- 17. 爲什麼System.Drawing.Graphics.GetHdc()增加內存使用
- 18. 模型中有什麼?爲什麼我們需要使用它
- 19. 爲什麼要在刪除臨時表之前立即截斷?
- 20. 爲什麼retainCount增加?
- 21. 爲什麼不會增加?
- 22. 爲什麼要使用應用型
- 23. 爲什麼在使用updateStateByKey時任務大小不斷增長?
- 24. 爲什麼GCD增加執行時間?
- 25. TypeScript - 爲什麼要使用類型?
- 26. #define:爲什麼要大寫?
- 27. 爲什麼以及何時在PHP中使用&$結果?
- 28. 爲什麼文本框大小在運行時自動增加?
- 29. 爲什麼列表中的大小不增加
- 30. 這些類型轉換的結果是什麼?爲什麼?