临时表和存储的proc编译

时间:2011-11-06 13:24:50

标签: sql-server

初学者问题

但我相信仍存在很多混淆,因为SQL 2000和SQL 2005 /更高版本之间的SQL Server版本之间的行为发生了变化。

SQL Server 2000 在存储过程定义中使用临时表会强制它每次都重新编译它。因此,不会存储执行计划,从而导致性能不佳。

SQL 2005及更高版本 即使你在proc定义中有临时表,它也不会在每次执行时重新编译。执行计划将被重新开始。

1 个答案:

答案 0 :(得分:3)

您对SQL 2000完全正确。对于SQL 2005,使用临时表的语句是从存储过程中单独编译并缓存的,以便可以重用它们。

有关SQL可编程性的信息,请参阅Temporary Tables, Table Variables and Recompiles。 API开发团队博客。滚动到以“编译存储过程DemoProc1时,不编译插入和选择查询”开头的部分。