sqlserver索引优化sql语句执⾏分析
前⾔:很多时候,我们并不知道数据表是否需要重建索引了,也不知道SQL执⾏的低效率到底问题出现在哪⾥了。以下内容便是之前在使有SQLSERVER2005数据库的⼀些⽇常分析操作,请笑纳~~~
如何查看数据库表是否需要重建索引
1、查看当前表的索引碎⽚情况:
DBCC SHOWCONTIG('表名')
注:扫描密度 [最佳计数:实际计数].......: 94.79% [91:96]
最佳计数与实际计数相当时说明索引是⽐较好的,如相差太多,就必须可以重新建或组织索引
2、对整表重建索引:
DBCC DBREINDEX('表名','','创建索引时每个索引页上要⽤于存储数据的空间百分⽐')
例:DBCC DBREINDEX('CALLLOG','','90')
数据库优化sql语句
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
转:blog.csdn/fsw4848438/article/details/44594601

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。