在SQL Server數(shù)據(jù)庫中,有可能存在重復(fù)的索引(Duplicate Indexes),這個不僅影響性能(INSERT、UPDATE、DELETE時(shí)帶來額外的IO開銷,當(dāng)數(shù)據(jù)庫維護(hù),索引重組時(shí)也會帶來額外的開銷),而且占用空間。數(shù)據(jù)庫存在重復(fù)索引(Duplicate Indexes)的原因是多方面的,很多時(shí)候、很多事情不是你所能完全掌控的,除非你所管理的數(shù)據(jù)庫非常規(guī)范,權(quán)限控制、腳本發(fā)布非常嚴(yán)格、流程化。暫且不說這些,那么怎么在數(shù)據(jù)庫巡檢過程找出這些重復(fù)的索引(Duplicate Indexes)呢? 下面分享一個我在Premier Proactive Services中發(fā)現(xiàn)一個的腳本(做了一些修改和調(diào)整)。

 

我們以AdventureWorks2014數(shù)據(jù)庫為例,如下所示,表[Person].[Address]下有4個索引,如下所示

 

clipboard

 

假設(shè)某個二愣子在這個表的字段StateProvinceID上創(chuàng)建了下面重復(fù)索引,IX_Address_N1 與IX_Address_StateProvinceID是一個重復(fù)索引。

 
CREATE INDEX IX_Address_N1 ON [Person].[Address](StateProvinceID);

 

網(wǎng)友評論