alter index reorganize重新组织索引使用的系统资源最少,并且是联机操作。也就是说,不保留长期阻塞性表锁,且对基础表的查询或更新可以在ALTER INDEX REORGANIZE事务处理期间继续进行。
alter index rebuild重新生成索引会删除并重新创建索引。这可以联机完成,也可以脱机完成,重新生成索引联机执行(ON),则索引操作期间可以用此表中的数据进行查询和修改数据。默认为OFF。
重组表上的所有索引
alter index all on table_name reorganize
重组表上的某个索引
alter index index_name on table_name reorganize
重建表上的所有索引
alter index all on table_name rebuild with (online=on)
重建表上的某个索引
alter index index_name on table_name rebuild with (online=on)
总结
1、重组索引是在线重整Index,不会对Table锁定,重新生成索引会对Table进行锁定。
2、重组索引的100%进度可以通过sys.dm_exec_requests的字段percent_complete来查看。
3、新版本的Sql Server 建议使用ALTER INDEX语句来重建或重组索引,已经不推荐使用DBCC INDEXDEFRAG、DBCC DBREINDEX。