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

 

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

 

clipboard

 

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

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

 

網(wǎng)友評論