gpt4 book ai didi

sql - Select 和 View 之间的执行计划差异

转载 作者:行者123 更新时间:2023-12-04 18:06:25 25 4
gpt4 key购买 nike

我制作了一个 View ,该 View 对产品表执行一些查询逻辑。当我从那个 View 中选择时

Select * from dbo.productView where productID = UUID

执行计划非常低效。但是,如果我采用生成 View 的查询并向其添加 where 子句,则执行计划将非常高效。为什么这些会产生如此不同的执行计划。我认为在普通 View (未索引)的情况下,查询分析器会扩展 View ,因此实际上这就像将 where 子句添加到构成 View 的 SELECT。

我不能只为 productView 建立索引,因为它使用 CTE 和窗口函数,但我希望查询分析器能够生成性能更高的执行计划,例如从普通选择中生成。

最佳答案

I thought in the case of normal views (not indexed) the query analyzer would expand the view

这是真的。尽管如此,这两个查询变体具有不同的执行计划缓存槽。可能是您不走运地重用了嗅探到错误参数值的旧计划。

获取新计划。清除测试系统上的缓存或添加 RECOMPILE 提示。这些计划现在将是相同的。

要解决此问题,请应用解决不良计划和参数嗅探的常用技术。

关于sql - Select 和 View 之间的执行计划差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25494335/

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