gpt4 book ai didi

SQL - CTE 与 VIEW

转载 作者:行者123 更新时间:2023-12-02 08:11:55 26 4
gpt4 key购买 nike

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

我发现了类似的问题here但这与性能有关。

更新1:

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

例如:tbl_trade 具有以下列:利润奖金费用。我需要 SUM(profit)SUM(bonus)SUM(expenses) 和一个新列 total将等于 SUM(利润)+SUM(奖金)+SUM(费用)

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

提前致谢!

最佳答案

View 可以被索引,但 CTE 不能。所以这是很重要的一点。

CTE 在树层次结构上表现出色,即递归

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

更新

根据您更新的问题, View 将是正确的选择。在 CTE 中处理 350 万行将会给 TempDb 带来额外的开销,最终会降低 SQL Server 的性能。请记住,CTE 是一次性 View ,因此不会存储任何统计信息,并且您也无法创建索引。它就像一个子查询。

关于SQL - CTE 与 VIEW,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30918633/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com