何时以及为什么要重新索引MSDE数据库

时间:2009-10-29 07:07:40

标签: indexing

我知道索引应该自动更新,但是当没有发生时我们需要重新索引。

我的问题是(1)为什么这个自动udate失败或为什么索引变坏? (2)我如何知道哪个表/索引需要在某个时间点重新编制索引?

1 个答案:

答案 0 :(得分:2)

索引'统计信息可能会自动更新。我不相信索引本身会在需要时自动重建(虽然可能有一些管理功能允许这样的事情发生)。

与接收大量更改(新行,更新行和已删除行)的表关联的索引可能会使索引变为碎片 ,效率会降低。重建索引然后在存储空间的连续部分中“重新打包”索引,有点类似于文件系统碎片整理的方式使文件访问速度更快......

此外,索引(在多个DBMS上)有一个 FILL_FACTOR 参数,该参数确定每个节点应增加多少额外空间以进行增长。例如,如果您希望明年特定表格增长20%,则通过将填充因子公布在80%左右,指数的碎片数量在第一年应该是最小的(如果这20%的增长可能会有一些不均匀分布,..)

在SQL Server中,可以查询指示其碎片级别的索引属性,因此可能需要进行维护。这可以通过交互式管理控制台完成。在MSSQL 2005及更高版本(甚至可能是旧版本中)sys.dm_db_index_physical_stats中,以编程方式也可以