sqlserver重建(rebuild)索引可以提高查询速度
发布时间:2020-12-12 14:28:32 所属栏目:MsSql教程 来源:网络整理
导读:当随着表的数据量不断增长,很多存储的数据进行了不适当的跨页(sqlserver中存储的最小单位是页,页是不不可再分的),会产生很多索引的碎片。这时候需要重建索引来提高查询性能。 如何查看索引的使用情况: SELECT index_type_desc,alloc_unit_type_desc,av
当随着表的数据量不断增长,很多存储的数据进行了不适当的跨页(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,'Sampled') 上面的语句是查询数据库db_name的表table_name的索引使用情况。 查询结果中的列avg_fragment_size_in_pages值超过40%就需要重建索引,可以减少IO扫描操作。 重建索引: alter index pk_my_users on my_users rebuild; 测试结果: 原来的碎片达到89%,重建索引碎片降到2%,查询速度快了1倍。(数据量为百万级) 记得2004年开始做DBA不久,重建一个8000万数据量的大表的索引, ——索引对select没有坏处,只有好处,但对DML(delete,update,insert)有坏处,增加了IO开销,而且索引本身的结果也会不断的变差,至于适不适合需要结合具体情况分析,对各种操作做一个权衡取舍! ——应该可以,因为rebuild是保留以前的索引树,通过这个索引树构建新的平衡索引树,所以之前的索引树存在切可用 http://lusanxiong.iteye.com/blog/1544950 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |