gpt4 book ai didi

sql-server - T-SQL CTE 的性能特征

转载 作者:行者123 更新时间:2023-12-02 20:30:07 25 4
gpt4 key购买 nike

我有一些大致如下所示的 SQL:

with InterestingObjects(ObjectID, OtherInformation, Whatever) as (
select X.ObjectID, Y.OtherInformation, Z.Whatever
from X join Y join Z -- abbreviated for brevity
)

-- ...long query follows, which uses InterestingObjects in several more CTEs,
-- and then uses those CTEs in a select statement at the end.

当我运行它时,我可以在执行计划中看到,基本上每次引用 CTE 时,它似乎都在 CTE 中运行查询。如果我创建一个临时表 #InterestingObjects 并使用它,当然,它会运行一次查询,将结果放入临时表中,然后再进行查询。在我的特定实例中,这使得整个过程运行得更快。

我的问题是:这是否总是我对 CTE 的期望(不以任何方式内存结果,就像它在各处内联查询一样?)是否有 SQL Server 无法更好地优化这一点的原因?通常我对优化器的智能感到敬畏,但令我惊讶的是它无法解决这个问题。

(编辑:顺便说一句,我在 SQL Server '08 R2 上运行它。)

最佳答案

CTE 可能更好也可能更差,仅取决于它们的使用方式(涉及递归、索引等概念)。您可能会发现这篇文章很有趣:http://www.sqlservercentral.com/articles/T-SQL/2926/

关于sql-server - T-SQL CTE 的性能特征,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3336100/

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