我有一个大约有20列的表。在这个表中,对于用户经常过滤的列,我有大约7个非聚集索引。活动记录(用户在屏幕上看到的记录)不超过700-800条。批处理作业每天运行两次,并在该表中插入一些记录(可能是30 - 100),并且也可能更新现有的记录。
我注意到每次批处理操作完成时索引都需要重新构建。他们的碎片化程度不会从0-1%逐步上升到50%。我注意到他们从0-1%到大约。批处理操作完成后99%。在批处理操作之间,这个表上可能会发生无数次的选择,但我认为这无关紧要。
这正常吗?我不这么认为。你认为问题出在哪里?被索引的列主要是字符串和浮点数。
一些改动可以轻易改变碎片级别。
- 在页面上插入会导致页面分割
- 行溢出
- 行可以移动(向前指针)
你将有相当宽的行,所以你的数据密度(每页行)较低。如果DML分布在许多页上,那么现有行的DML将很快导致碎片化