sqlserver 索引优化 sql语句执行分析

前言:很多时候,我们并不知道数据表是否需要重建索引了,也不知道SQL执行的低效率到底问题出现在哪里了。以下内容便是之前在使有SQLSERVER2005数据库的一些日常分析操作,请笑纳~~~


如何查看数据库表是否需要重建索引

1、查看当前表的索引碎片情况:

   DBCC SHOWCONTIG('表名')
   注:扫描密度 [最佳计数:实际计数].......: 94.79% [91:96]
       最佳计数与实际计数相当时说明索引是比较好的,如相差太多,就必须可以重新建或组织索引

2、 对整表重建索引:

   DBCC DBREINDEX('表名','','创建索引时每个索引页上要用于存储数据的空间百分比')
   例:DBCC DBREINDEX('CALLLOG','','90')

3、重建表中指定索引

DBCC DBREINDEX('表名','要重建的索引名','创建索引时每个索引页上要用于存储数据的空间百分比')
 例:DBCC DBREINDEX('CALLLOG','CALLID_INDEX','90')

4、重建完索引,再查看索引碎片情况。对比最佳计数与实际计数。
 

5、新建索引

CREATE CLUSTERED INDEX CALLID_INDEX ON CALLLOG(CALLID) --聚集索引

CREATE INDEX CALLID_INDEX ON CALLLOG(CALLID)  --非聚焦索引

DMV查看有关缺失索引的详细信

SELECT * FROM sys.[dm_db_missing_index_details] order by index_handle

查看SQL语句的实际执行情况

set statistics profile on 

select * from calllog

set statistics profile off

查看 查询计划的选择依据

dbcc show_statistics (Products, IX_CategoryID)
注:它需要二个参数,1. 表名,2. 索引名

清空执行计划缓存(在查看SQL执行情况前,用于清除上次查询留下的缓存计划)

DBCC DROPCLEANBUFFERS

清空数据缓存

DBCC FREEPROCCACHE

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值