删除索引会发生什么不好?

时间:2012-02-09 18:27:43

标签: sql sql-server database sql-server-2000

如果我删除SQL Server 2000中的现有索引(并且2008 R2中的效果类似?),可能会发生什么?

我知道它可能会减慢一些查询,但这是最糟糕的事情吗?

我正在查看索引优化向导并尝试确定是否需要保留所有现有索引,因为如果过去的DBA应用了错误的那些怎么办?如果调整向导在保持现有关闭的情况下给出了更高的改进百分比,我该怎么办?

3 个答案:

答案 0 :(得分:2)

如果索引是唯一索引,则会阻止插入重复值。如果删除它,可以在不合适的地方输入唯一值。

答案 1 :(得分:2)

  • 放慢速度,有时显着
  • 删除唯一索引会导致数据不合理,从而导致错误的查询结果
  • 在计算列上删除索引 - 可以更显着降低性能
  • 增加缓冲池的使用 - 因此可能拒绝为某些内存加载CLR代码或甚至常规查询提供服务。由于内存不足可能导致更多的重新编译
  • 会导致更多死锁
  • 会严重增加IO子系统的压力

答案 2 :(得分:2)

在OP被引导之前,"永远不会删除索引"路径,让我强调一点:永远不要说永远。

有时候,索引会比删除它们花费更多。有许多方法可以检查这一点,例如sys.dm_db_index_usage_stats(它可以告诉您具有大量写入活动但很少或没有读取活动的索引)。

与往常一样,您应该在具有真实数据和实际负载的隔离环境中测试您的更改。