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