重新索引及其对 SQL 缓存的影响

Ban*_*ice 4 sql-server-2005 cache

目前正在研究重新索引我们的 sql 数据库,但找不到有关过程缓存是否会受到影响的任何信息。任何帮助或信息都会很棒。我们使用 SQL Server 2005 作为我们的 DBMS。

Rem*_*anu 6

执行计划缓存和重用列出了一些触发重新编译的因素:

重新编译执行计划

根据数据库的新状态,数据库中的某些更改可能导致执行计划效率低下或无效。SQL Server 检测到使执行计划无效的更改并将该计划标记为无效。然后必须为下一个执行查询的连接重新编译新计划。使计划无效的条件包括:

  • 对查询引用的表或视图所做的更改(ALTER TABLE 和 ALTER VIEW)。
  • 对单个过程所做的更改,这将从缓存中删除该过程的所有计划 (ALTER PROCEDURE)。
  • 对执行计划使用的任何索引的更改。
  • 执行计划使用的统计信息的更新,从语句显式生成,例如 UPDATE STATISTICS,或自动生成
  • 删除执行计划使用的索引。
  • 对 sp_recompile 的显式调用。
  • 对键的大量更改(由修改查询引用的表的其他用户的 INSERT 或 DELETE 语句生成)。
  • 对于带有触发器的表,如果插入或删除的表中的行数显着增长。
  • 使用 WITH RECOMPILE 选项执行存储过程。

由于索引重建操作也会更新统计信息作为副作用,因此索引重建将触发计划失效(重新编译)。