【发布时间】:2013-09-05 13:02:12
【问题描述】:
我在查询中使用了不同的临时表。当我执行下面的查询时
select * from myView
执行只需 5 秒。
但是当我执行时
select * into #temp from myView
需要 50 秒(是上述查询的 10 倍以上)。
我们从 SQL Server 2000 迁移到 SQL Server 2008 R2。在 SQL 2000 之前,这两个查询都需要相同的时间,但在 SQL Server 2008 中,执行时间要多 10 倍。
【问题讨论】:
-
您如何衡量
select * from myView的结果?如果您正在寻找行首次出现的时间,那是错误的。您必须等到所有行都存在才能进行有效比较。 -
@Gordon Linoff 是的,当查询完成执行时,我正在检查执行结束时的执行时间。
-
如果先定义临时表然后插入会发生什么,例如
CREATE TABLE #Temp (...) INSERT #Temp (...) SELECT * FROM MyView。你能发布每个查询的执行计划吗? -
@GarethD 我按照您的建议尝试了该方法,但它也需要与 select * int #temp from myview 相同的时间。
-
还有执行计划?
标签: sql sql-server sql-server-2008 tsql temp-tables