CTOCIO IT专家网

天极传媒 比特网 | 天极网 | IT专家网 | IT商网 | 52PK游戏网 | 手机天极 | IT分众 |
IT专家网搜索

数据库 | Oracle | DB2 | SQL Server | MySQL | 商业智能 | BI | DBA | Sybase| SQL Server 2008

您现在的位置: IT专家网 > 数据库子站 > 数据库技巧

SQL Server索引维护指导

作者: 王红波,  出处:IT专家网, 责任编辑: 李书琴, 
2008-04-15 09:48
  本文以笔者在实际工作中对SQL Server数据库中索引维护的思路和方法为导向,为大家介绍SQL Server索引维护相关的知识和方法。

  【IT专家网独家】索引数据库相关工作者的日常工作中占据了很重要的位置,索引需要牵涉到索引创建、优化和维护多方面的工作,本文以实例结合相关原理来介绍索引维护相关的知识。文中的相关代码,也可以满足多数情况下索引的维护需求。

  实现步骤

  1. 以什么标准判断索引是否需要维护?

  2. 索引维护的方法有哪些?

  3. 能否方便地整理出比较通用的维护过程,实现自动化维护?

  一、 以什么标准判断索引是否需要维护?

  由于本文集中讨论索引维护相关,所以我们暂且抛开创建的不合理的那些索引,仅从维护的角度来讨论。从索引维护的角度来讲,最主要的参考标准就是索引碎片的大小。通常情况下,索引碎片在10%以内,是可以接受的。下面介绍获取索引碎片的方法:

  SQL Server 2000: DBCC SHOWCONTIG

  SQL Server 2005: sys.dm_db_index_physical_stats

  实例(取db_test数据库所有索引碎片相关信息):

  SQL Server 2000:

USE [db_test];
GO
DBCC SHOWCONTIG WITH TABLERESULTS, ALL_INDEXES
GO

SQL Server 2005:
DECLARE @db_name VARCHAR(256)
SET @db_name='db_test' 
SELECT
   db_name(a.database_id) [db_name],
   c.name [table_name],
   b.name [index_name],
   a.avg_fragmentation_in_percent
FROM
   sys.dm_db_index_physical_stats (DB_ID(@db_name), NULL,NULL, NULL, 'Limited') AS a
 JOIN
   sys.indexes AS b ON a.object_id = b.object_id AND a.index_id = b.index_id
 JOIN
   sys.tables AS c ON a.object_id = c.object_id
WHERE
  a.index_id>0
  AND a.avg_fragmentation_in_percent>5 -–碎片程度大于5

共6页。 1 2 3 4 5 6 :

网友评论

笔名 
请您注意:遵守国家有关法律、法规,尊重网上道德,承担一切因您的行为而直接或间接引起的法律责任。    IT专家网友拥有管理笔名和留言的一切权利。
  • 周排行榜
  • 月排行榜

邮件订阅


    
天极服务 | 关于我们 | 网站律师 | 加入我们 | 联系我们 | 广告业务 | 友情链接 | 我要挑错
All Rights Reserved, Copyright 2004-2007, ChinaByte
渝ICP证B2-20030003号 如有意见请与我们联系 powered by 天极内容管理平台CMS4i