首页 > 解决方案 > MS SQL Server:暂时禁用索引,但保持更新以便快速重新启用

问题描述

我知道disable. alter index但这不仅禁用它对查询的使用,它还会删除索引数据,因此如果您稍后重新启用它,则需要从头开始重建数据。

假设我有一个我认为很少使用的索引。我已经检查了性能计数器,sys.dm_db_index_usage_stats并试图确保删除索引不会显着影响应用程序性能。尽管如此,我可能是错的,我可能会犯错误。我宁愿暂时禁用索引,因此查询优化器不会使用它,但是当写入表时索引仍将保留在磁盘上。几天后,我可以采取第二步并完全删除索引。如果事实证明我错了,我可以立即重新启用索引,而无需从头开始重建它。

明确一点——假设它是一张大表上的一个大索引,而且我没有昂贵的 MSSQL 版本可以让我进行在线索引创建。因此,如果以及何时重新启用索引,我想避免长时间等待。

是否有一些技巧可以让我禁用查询的索引,所以我可以额外确保没有任何东西放慢速度,如果它后来被删除?我正在使用 MSSQL 2016,但我也会对更高版本的答案感兴趣。

标签: sql-serveroptimizationindexingdisable

解决方案


是否有一些技巧可以让我禁用查询的索引,所以我可以额外确保没有任何东西放慢速度,如果它后来被删除?

不,SQL Server 中没有这样的功能。Azure SQL 数据库实现了自动索引管理,而无需此类功能,只需监视索引统计信息和缺失的索引即可。


推荐阅读