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

 

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

 

clipboard

 

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

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

 

網(wǎng)友評(píng)論