SQL Server中的执行计划何时生成?

时间:2011-02-23 07:48:21

标签: sql-server sql-execution-plan

在SQL Server的存储过程中,何时生成实际的SQL查询计划?当SQL第一次运行或编译存储过程时?知道查询计划的生成与Oracle相比有多昂贵吗?

1 个答案:

答案 0 :(得分:4)

运行查询时,SQL Server将检查执行计划缓存中是否已存在该查询的执行计划。如果找到一个,它可以重用该执行计划。如果它没有在缓存中找到一个,则它会生成一个计划,放入缓存以备后续的重用调用,然后执行查询。所以它在执行查询时执行此操作。

计划在缓存中保留多长时间可归结为多种因素,包括:
- 该计划的使用频率 - 计划提供多少“价值” - 服务器上的内存压力

因此,给定查询可能会在给定时间段内多次生成执行计划,如果计划不能保留在缓存中。此外,当SQL Server重新启动时,缓存将被清除。

Execution Plan Caching and Reuse

上有一篇很好的MSDN文章