SQL – CTE与VIEW
我的问题是CTE和SQL中的View有什么区别.我的意思是在哪种情况下我应该使用CTE以及哪种情况下使用View.我知道两者都是某种虚拟表,但我无法区分它们的用途. 我发现了类似的问题here,但它是关于性能的. 更新1: 例如:我有一个充满交易的数据库(tbl_trade).我需要从3.5百万条记录中选择当前时间到当前时间打开的交易,然后操纵数据(在虚拟表上使用不同的查询 – 这看起来像View).这里的问题是我需要一个3-4列的SUM,然后我需要SUM一些列并创建一个带有结果的虚拟列(看起来像CTE). 例如:tbl_trade有列:利润,奖金和费用. PS.重新运行SUM的查询不是一个选项,因为我已经有了结果. 提前致谢! 解决方法视图可以编入索引,但CTE不能.所以这是一个重点.CTE在树层次上的工作非常出色.递归 此外,在处理复杂查询时请考虑视图.视图是数据库上的物理对象(但不是物理存储数据),可用于多个查询,从而提供灵活性和集中式方法.另一方面,CTE是临时的,将在使用时创建;这就是为什么它们被称为内联视图. 更新 根据您更新的问题,观点将是正确的选择.在CTE中处理350万行将在TempDb上产生额外的开销,这最终会降低SQL Server的性能.请记住,CTE是一次性视图,因此不存储统计信息,也无法创建索引.它就像一个子查询. (编辑:威海站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |