gpt4 book ai didi

sql - 从 View 中插入临时表非常慢

转载 作者:行者123 更新时间:2023-12-04 04:43:19 24 4
gpt4 key购买 nike

我在查询中使用了不同的临时表。当我执行下面的查询时

 select * from myView 

执行仅需5秒。

但是当我执行

select * into #temp from myView 

耗时 50 秒(比上述查询多 10 倍)。

我们从 SQL Server 2000 迁移到 SQL Server 2008 R2。在 SQL 2000 之前,这两个查询花费的时间相同,但在 SQL Server 2008 中,执行时间增加了 10 倍。

最佳答案

老问题,但由于我有一个类似的问题(虽然在 SQL Server 2014 上)并以我在任何可用资源上都没有看到的方式解决它,我想我会分享希望它对其他人有帮助.

我有过类似的情况:我创建的 View 需要 21 秒才能返回其完整的结果集,但是当我将它转换为 SELECT 时需要 10 多分钟(此时我停止了查询) ..INTO SELECT 很简单,没有连接也没有谓词。我的预感是优化器根据附加的 INTO 语句更改了原始计划,该语句不像第一个实例那样简单地拉取数据集,然后执行 INSERT,而是以一种非常次优的方式改变它。

我首先尝试了一个OPENQUERY,试图强制先生成结果集,然后插入到临时表中。此方法的总运行时间为 23 秒,显然更接近原始 SELECT 时间。在此之后,我返回到我原来的 SELECT..INTO 查询并添加了一个 OPTION (FORCE ORDER) 提示以尝试复制 OPENQUERY 行为.这似乎已经成功了,时间与 OPENQUERY 方法相当,23 秒。

目前我没有足够的时间来比较查询计划,但是如果您遇到这个问题,作为一个快速而肮脏的选择,您可以尝试:

select * into #temp from myView option (force order);

关于sql - 从 View 中插入临时表非常慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18572887/

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