SQL Server:使用索引

时间:2016-10-20 23:53:36

标签: sql sql-server sql-server-2012 sql-server-2014

我有一个3600万行的堆表,我试图删除选定的600万行。当我在100个批次中删除时,读取是16 +++++并且写入是113所以我在Identity列上添加NON-clus索引以使读取更快,现在读取是34899并且写入是3508并添加一个NON-clus Idx它会增加写入IO的速度。

那么为什么要知道为什么SQL Server在后台执行的内容与计划中我看到的表删除的差异是8%而且没有更多详细信息。

当我删除我的数据页面并且使用的页面越来越多时,令人难以置信..我查询sys.allocation单位来检查

当我删除2500行时,我的日志文件增加到42 MB,碎片从0.02增加到2.96

在执行此操作之前添加更多内容我会删除2 Nvarchar列,并清理表并重建它

1 个答案:

答案 0 :(得分:0)

将非聚集索引更改为聚簇索引。从表中删除行时,SQL Server必须从堆中删除页面,并从索引中删除页面。如果您有聚簇索引,则SQL Server只需从此索引中删除行。