【发布时间】:2015-09-04 06:50:36
【问题描述】:
我的问题是 SQL 中的CTE 和View 有什么区别。我的意思是在哪种情况下我应该使用CTE,在哪种情况下应该使用View。我知道两者都是某种虚拟表,但我无法区分它们的用途。
我发现了一个类似的问题here,但它是关于性能的。
更新 1:
例如:我有一个充满交易的数据库(tbl_trade)。我需要从 350 万条记录中仅选择从当前月份到当前时间打开的交易,然后操作数据(在虚拟表上使用不同的查询 - 这看起来像查看)。这里的问题是我想要一个 3-4 列的 SUM,然后我需要 SUM 一些列并使用结果创建一个虚拟列(看起来像 CTE)。
例如:tbl_trade 具有列:profit、bonus 和 expenses。
我需要SUM(profit),SUM(bonus),SUM(expenses) 和一个新列total,它等于SUM(profit)+SUM(bonus)+SUM(expenses)。
附言。重新运行SUM 的查询不是一个选项,因为我已经有了结果。
提前致谢!
【问题讨论】:
-
视图是数据库中的一个对象。 CTE 仅在单个查询期间存在。它们看起来非常不同。你能提供一个在它们之间进行选择的例子吗?
-
您正在处理多少数据? CTE 广泛使用 TempDb,如果您的 TempDb 配置不正确或您的 CTE 正在处理大量行,那么这不是最佳选择。处理大量数据时选择查看,处理少量数据时选择 CTE。当您需要递归时,您也可以选择 CTE。就是这样!
-
您好,感谢您的回复。查看更新的问题
-
@BlackM 检查我的更新答案。
标签: sql sql-server common-table-expression sql-view