sqlserver重建(rebuild)索引可以提高查询速度

当随着表的数据量不断增长,很多存储的数据进行了不适当的跨页(sqlserver中存储的最小单位是页,页是不不可再分的),会产生很多索引的碎片。这时候需要重建索引来提高查询性能。

如何查看索引的使用情况:
SELECT index_type_desc,alloc_unit_type_desc,avg_fragmentation_in_percent,fragment_count,avg_fragment_size_in_pages,page_count,record_count,avg_page_space_used_in_percent
FROM sys.dm_db_index_physical_stats(DB_ID('db_name'),OBJECT_ID('table_name),NULL,NULL,'Sampled')

上面的语句是查询数据库db_name的表table_name的索引使用情况。

查询结果中的列avg_fragment_size_in_pages值超过40%就需要重建索引,可以减少IO扫描操作。

重建索引:
alter index pk_my_users on my_users rebuild;

测试结果:
原来的碎片达到89%,重建索引碎片降到2%,查询速度快了1倍。(数据量为百万级)

你可能感兴趣的:(sqlserver)