T-SQL临时数据比较#vs与WITH

TSQ*_*oob 5 t-sql

我已经使用基本SQL几年了.但是,直到最近我才遇到"WITH"命令.根据我的研究,看起来"WITH"是一种创建临时表的方法.但根据我的经验,您还可以使用哈希"#"来创建临时表.

我试图搜索"WITH"和"#",但由于这些是奇怪的搜索词,我得不到多少结果.

有人会对每个人的利弊有什么不同吗?

小智 4

您可以用来WITH创建公共表表达式 (CTE)。从技术上讲,它不是临时表。

临时表与任何其他表一样,但它会tempdb在连接关闭时存储并删除。

但与临时表不同的是,CTE 实际上没有物理存储。它更像是一个“视图”。

这是一篇关于 CTE 到底是什么的精彩文章。与在连接中持续存在的临时表不同,CTE 是:

在单个 SELECT、INSERT、UPDATE、DELETE 或 CREATE VIEW 语句的执行范围内定义

有关使用公用表表达式的 MSDN 参考