Worktable

 

查询MSDN对于'Worktable'的解释:

 

关系引擎可能需要生成一个工作表以执行 SQL 语句中指定的逻辑操作。工作表是用于保存中间结果的内部表。某些 GROUP BY、ORDER BY 或 UNION查询中会生成工作表。例如,如果 ORDER BY 子句引用了不为任何索引涵盖的列,则关系引擎可能需要生成一个工作表以按所请求的顺序对结果集进行排序。工作表有时也用作临时保存执行部分查询计划所得结果的假脱机。工作表在tempdb中生成,并在不再需要时自动删除。

 

 之后查到原因是因为开发人员使用了大量的Cursor存储临时数据导致SQL Server在tempdb创建了工作表,从而导致了大量的开销。替换之后问题解决。所以以后遇到类似的'Worktable'可以重点检查那些GROUP BY、ORDER BY 或 UNION 等需要存贮中间数据的操作,寻找优化解决办法。

 

Table 'Worktable'.Scan count 0, logical reads 7523,physical reads 0

Table 'Employee'. Scan count 1, logical reads106, physical reads 0

 

其中'Worktable'表逻辑读非常高,也是同样的问题。本来查询的只有一张表,哪来的'Worktable'?

posted @ 2014-12-01 23:08  智能先行者  阅读(383)  评论(0编辑  收藏  举报