程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> SqlServer數據庫 >> 關於SqlServer >> SQL Server索引維護指導

SQL Server索引維護指導

編輯:關於SqlServer

索引在數據庫相關工作者的日常工作中占據了很重要的位置,索引需要牽涉到索引創建、優化和維護多方面的工作,本文以實例結合相關原理來介紹索引維護相關的知識。文中的相關代碼,也可以滿足多數情況下索引的維護需求。

實現步驟

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

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved