查询性能比较

时间:2014-10-18 17:19:05

标签: sql-server-2008 query-performance sql-execution-plan

我对某些“类似”陈述的运行时间表现感到困惑。

select * from  DLIFE.IS_TABLE_REPORT where [project_name] = 'myProject'
-- (82 row(s) affected) in 02:10

现在,如果我尝试在另一个查询中使用此查询返回的记录,则执行时需要4次或更长时间。 我能想到的最简单的例子就是:

select * into #temp
from  DLIFE.IS_TABLE_REPORT where [project_name] = 'myProject'
-- (82 row(s) affected) in 08:10

因此出于某种原因,似乎需要花费6分钟将82行写入临时表! 这里发生的事情比我理解的要多。

查看执行计划&统计数据显示,两者之间存在很大差异。 我原以为它们几乎一样!

突然间,我意识到自己知之甚少。

统计:

选择

Table 'Key_Column_Definitions_Header'.  Scan count 0, logical reads 202
Table 'Worktable'.                      Scan count 2,952,361, logical reads 24,753,476;
Table 'DLIFE_Med_Short'.                Scan count 101, logical reads 41,496, read-ahead reads 1, 
Table 'DLIFE_IS_FD_RUN_HISTORY'.        Scan count 1, logical reads 88, 

选择进入

Table 'Worktable'. Scan count 3825785, logical reads 29,257,307, physical reads 6,513; 
Table 'DLIFE_Med_Short'. Scan count 82, logical reads 40660, 
Table 'DLIFE_IS_FD_RUN_HISTORY'. Scan count 9, logical reads 182, 
Table 'Key_Column_Definitions_Header'. Scan count 1, logical reads 4, read-ahead reads 3,

执行计划

Select

Select Into

0 个答案:

没有答案