14

我有一个查询,它创建几个临时表,然后将数据插入其中。据我了解,这是 Table Spool 的潜在原因。当我查看我的执行计划时,我的大部分处理都花在了 Table Spool 上。有没有什么好的技术可以改善这些类型的性能问题?与临时表相比,使用视图或 CTE 会给我带来什么好处吗?

我还注意到,当我将鼠标悬停在每个表假脱机上时,输出列表来自同一个临时表。

4

1 回答 1

22

好吧,根据您提供的信息,我只能说:查询优化器选择了最好的计划。它使用表假脱机来加快执行速度。不使用表线轴的替代品会更慢。

如何显示查询、表模式和基数以及计划。

更新

如果您不能向我们展示查询,我当然理解。但是真的很难猜出为什么在不知道任何细节的情况下发动机会优先使用假脱机。我建议您阅读 Craig Freedman 的博客,他是查询优化器团队的一名工程师,并解释了 SQL 2005/2008 优化器的许多内部工作原理。以下是一些我可以很快找到的条目,它们以一种或另一种形式触及假脱机主题:

SQL 客户支持团队在http://blogs.msdn.com/psssql/
也有一个有趣的博客, 并且“sqltips”(关系引擎的团队博客)有一些技巧,比如查询计划中的假脱机操作符......

于 2009-12-18T23:35:35.130 回答