我已經使用了幾年的基本SQL。但是,直到最近我才遇到「WITH」命令。從我的研究中,它看起來像「WITH」是一種創建臨時表的方法。但以我的經驗,你也可以使用散列「#」來創建一個臨時表。T-SQL臨時數據比較#vs
我試圖搜索「WITH」和「#」,但由於這些都是奇怪的搜索詞,我沒有得到太多的結果。
難道有人會問我每個人的利弊有什麼區別嗎?
我已經使用了幾年的基本SQL。但是,直到最近我才遇到「WITH」命令。從我的研究中,它看起來像「WITH」是一種創建臨時表的方法。但以我的經驗,你也可以使用散列「#」來創建一個臨時表。T-SQL臨時數據比較#vs
我試圖搜索「WITH」和「#」,但由於這些都是奇怪的搜索詞,我沒有得到太多的結果。
難道有人會問我每個人的利弊有什麼區別嗎?
您使用WITH
來創建公用表表達式(CTE)。這在技術上不是臨時表。
臨時表與其他表相似,但存儲在tempdb
中,並在關閉連接時斷開。
雖然與臨時表不同,但CTE實際上並沒有物理存儲。這更像是一個「觀點」。
Here is a great article on exactly what CTEs are。不像臨時表,即持續的連接,CTE是:
的執行範圍內定義一個SELECT,INSERT,UPDATE,DELETE或CREATE VIEW語句
WITH
是一個即時創建的表(在內存中),所以它可能比臨時表(#)快得多,就像任何其他表一樣,但當您關閉連接時它會自動刪除。可以肯定的是,它只對一個聲明有效