SQL – CTE与VIEW

前端之家收集整理的这篇文章主要介绍了SQL – CTE与VIEW前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我的问题是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是一次性视图,因此不存储统计信息,也无法创建索引.它就像一个子查询.

原文链接:https://www.f2er.com/mssql/79622.html

猜你在找的MsSQL相关文章