【问题标题】:Table with no more than 30k records needs index rebuilding after a handful of inserts不超过 30k 条记录的表需要在少量插入后重建索引
【发布时间】:2011-09-26 06:10:21
【问题描述】:

我有一张有 20 列左右的表格。我在该表中大约有 7 个非聚集索引,位于用户更频繁地过滤的列上。活动记录(用户在屏幕上看到的记录)不超过 700-800。批处理作业每天运行两次,并在该表中插入几条记录 - 可能是 30 到 100 条 - 并且还可能更新现有的记录。

我注意到每次批处理操作完成时都需要重建索引。他们的碎片化程度不会从 0-1% 一步步地上升到 50%。我注意到它们从 0-1% 变为大约。批量操作完成后 99%。在批处理操作之间,这张表上可能会发生无数次选择,但我认为这并不重要。

这正常吗?我认为不是。你认为这是什么问题?索引列主要是字符串和浮点数。

【问题讨论】:

    标签: sql sql-server indexing


    【解决方案1】:

    一些更改可以轻松改变碎片级别。

    • 页面上的插入可能会导致页面拆分
    • 行可能溢出
    • 可以移动行(前向指针)

    您的行数也会很宽,因此您的数据密度(每页的行数)会更低。如果 DML 分布在许多页面上,现有行上的 DML 将很快导致碎片

    【讨论】:

    • 我明白了——所以在某种程度上这是正常的吗?
    • @Yannis:在这种情况下,我会说这是意料之中的
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-01-09
    • 2013-08-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多