加入收藏 | 设为首页 | 会员中心 | 我要投稿 大连站长网 (https://www.0411zz.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

SQL – CTE与VIEW

发布时间:2021-05-16 17:08:32 所属栏目:MsSql教程 来源:网络整理
导读:我的问题是CTE和SQL中的View有什么区别.我的意思是在哪种情况下我应该使用CTE以及哪种情况下使用View.我知道两者都是某种虚拟表,但我无法区分它们的用途. 我发现了类似的问题here,但它是关于性能的. 更新1: 例如:我有一个充满交易的数据库(tbl_trade).我

我的问题是CTE和SQL中的View有什么区别.我的意思是在哪种情况下我应该使用CTE以及哪种情况下使用View.我知道两者都是某种虚拟表,但我无法区分它们的用途.

我发现了类似的问题here,但它是关于性能的.

更新1:

例如:我有一个充满交易的数据库(tbl_trade).我需要从3.5百万条记录中选择当前时间到当前时间打开的交易,然后操纵数据(在虚拟表上使用不同的查询 – 这看起来像View).这里的问题是我需要一个3-4列的SUM,然后我需要SUM一些列并创建一个带有结果的虚拟列(看起来像CTE).

例如:tbl_trade有列:利润,奖金和费用.
我需要SUM(利润),SUM(奖金),SUM(费用)和新的列总数,它们将等于SUM(利润)SUM(奖金)SUM(费用).

PS.重新运行SUM的查询不是一个选项,因为我已经有了结果.

提前致谢!

解决方法

视图可以编入索引,但CTE不能.所以这是一个重点.

CTE在树层次上的工作非常出色.递归

此外,在处理复杂查询时请考虑视图.视图是数据库上的物理对象(但不是物理存储数据),可用于多个查询,从而提供灵活性和集中式方法.另一方面,CTE是临时的,将在使用时创建;这就是为什么它们被称为内联视图.

更新

根据您更新的问题,观点将是正确的选择.在CTE中处理350万行将在TempDb上产生额外的开销,这最终会降低SQL Server的性能.请记住,CTE是一次性视图,因此不存储统计信息,也无法创建索引.它就像一个子查询.

(编辑:大连站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读