1
考慮下面的SQL(SQL Server 2008中)聲明:WITH語句如何存儲select查詢的記錄集?
WITH MyResult AS
(
SELECT
Name,
Row_ID AS ORD
FROM Person Where Gender = @Gender
)
SELECT *
FROM MyResult
WHERE ORD > 5
是MyResult存儲在一個臨時表在tempdb?還是它做了別的事情?
我們優化一些查詢,並會艾克以更好地與語句(內部)瞭解,以幫助計性能等
感謝
「...一個臨時結果集......」引發了我們認爲臨時結果集臨時存儲在某處的想法(即tempdb) – Russell 2010-06-24 09:18:11
@Russell - 是的,我可以看到措辭有點混濁在這。本身使用CTE時,SQL Server不會創建臨時表。當然,就像任何查詢,CTE或者沒有CTE一樣,它可以根據發生的情況分頁到tempdb。但這不是特定於CTE的 – AdaTheDev 2010-06-24 09:21:47