SQLServer中的索引片段處理

來源:互聯網
上載者:User

SQLServer資料庫隨著使用時間的增長,會讓人覺得越來越慢,這個和你平時沒有合理的維護計劃有關係,定期處理索引片段是一個必不可少的工作內容之一。 具體資訊參考msdn

http://msdn.microsoft.com/zh-cn/library/ms189858.aspx 我工作中碰到一張表,有320萬記錄,資料表佔用空間800多兆,所有索引片段大於80%,甚至有100%,索引佔用空間500兆,重建索引後佔用空間減小到200多兆。 一個可以在SQL2005中測試的指令碼

--drop database db_index_test --建立測試環境

create database db_index_test

 go

use db_index_test

go

create table tbTest(rownum int identity(1,1),id varchar(100),date datetime)

go

create index index_id on tbTest(id) go

--插入測試資料,並適當刪除一部分資料

declare @i int

set @i=1

while @i<10

begin

 insert into tbTest(id,date)

select newid(),getdate() from syscolumns

delete from tbTest where rownum%2=0

set @i=@i+1

end

go

--檢查索引

SELECT avg_fragmentation_in_percent FROM sys.dm_db_index_physical_stats (DB_ID(), OBJECT_ID(N'tbTest'),      NULL, NULL, NULL) AS a     JOIN sys.indexes AS b ON a.object_id = b.object_id AND a.index_id = b.index_id where name='index_id'

go --重建索引

alter index index_id on tbTest rebuild go

--檢查索引

SELECT avg_fragmentation_in_percent FROM sys.dm_db_index_physical_stats (DB_ID(), OBJECT_ID(N'tbTest'),      NULL, NULL, NULL) AS a     JOIN sys.indexes AS b ON a.object_id = b.object_id AND a.index_id = b.index_id where name='index_id' --刪除測試環境 go use master go drop database db_index_test

go

在sql的用戶端工具SQL Server Management Studio中也可以手動檢查並重建索引

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.