查看: 6158|回复: 0
打印 上一主题 下一主题

SQL Server 2005 显示索引使用情况

[复制链接]
跳转到指定楼层
1#
发表于 2008-10-7 17:19:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
台州网址导航
与查询性能调优相似,在数据库中创建有用的索引经常是艺术和科学的结合。在加速SELECT查询的同时,索引减慢了数据的修改。必须平衡读取活动与数据修改活动带来的索引开销的代价/受益。每一个增加到表中的索引都会以数据修改速度为代价改善查询性能。在这之上,索引的效能会随着数据的改变而改变,由此几个星期前索引还是有用的,今天可能就没用了。在SQL Server 2000中最大的困难之一是找出哪一个索引没被使用——从来都不使用或很少使用。这是重要的,因为增加索引减慢更新速度。如果想在表中创建索引,则它们应该在高优先级的查询中很好地使用。如果SQL Server没有使用某个索引,它就是静负荷。

现在在SQL Server 2005中,可以通过查询动态管理视图sys.dm_db_index_usage_stats查看索引是否被使用。这个视图从SQL Server实例上次重启以后返回有关索引查找、扫描、更新或查找的次数的统计信息。它也返回引用索引的最后的时间。

在这个示例中,查询动态管理视图sys.dm_db_index_usage_stats去查看表Sales.Customer中的索引是否被使用过。在引用sys.dm_db_index_usage_stats之前,要在表Sales.Customer上执行两个查询,第一个返回所有的行和列,第二个返回具有指定的TerritoryID的列AccountNumber:



在执行完查询之后,查询动态管理视图sys.dm_db_index_usage_stats:



它返回:



解析

动态管理视图sys.dm_db_index_usage_stats允许查看SQL Server实例使用了哪个索引。在最后一次SQL Server重启之后统计信息才生效。

在这个技巧中,在表Sales.Customer上执行两个查询。在执行完查询后,查询动态管理视图sys.dm_db_index_usage_stats。

SELECT子句显示了索引的名称、用户查找和用户扫描的次数以及用户最后查找和最后扫描的时间:



FROM子句通过object_id和index_id将动态管理视图sys.dm_db_index_usage_stats联结到系统目录视图sys.indexes上(所以索引名应该显示在结果中):



WHERE子句限定只显示数据库AdventureWorks上的索引以及表Sales.Customer上的索引。DB_ID函数用来返回数据库系统ID,OBJECT_ID函数用来得到表的对象ID:



查询返回两行,显示表Sales.Customer的聚集索引PK_Customer_CustomerID最近被访问过(很可能是通过第一个SELECT *查询),并且第二个查询(限定了TerritoryID = 4)使用了非聚集索引IX_Customer_TerritoryID。

索引帮助提高了查询性能,但也增加了磁盘空间和数据修改的开销。使用动态管理视图sys.dm_db_index_usage_stats,可以监视索引是否真的被使用,如果没有,则把它们替换为更有效的索引。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 转播转播 分享分享 分享淘帖
台州维博网络(www.tzweb.com)专门运用PHP+MYSQL/ASP.NET+MSSQL技术开发网站门户平台系统等。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

网站推广
关于我们
  • 台州朗动科技(Tzweb.com)拥有多年开发网站平台系统门户手机客户端等业务的成功经验。主要从事:政企网站,系统平台,微信公众号,各类小程序,手机APP客户端,浙里办微应用,浙政钉微应用、主机域名、虚拟空间、后期维护等服务,满足不同企业公司的需求,是台州地区领先的网络技术服务商!

Hi,扫描关注我

Copyright © 2005-2026 站长论坛 All rights reserved

Powered by 站长论坛 with TZWEB Update Techonolgy Support

快速回复 返回顶部 返回列表