Insert,Update,Delete işlemlerinde tablonun üzerinde bulunan her index’in update görme ihtimali vardır. Dolayısıyla tablo üzerinde ne kadar çok index var ise DML işlemlerinin performansı o kadar düşecektir.
Bugün sizler ile paylaşacağım script ile kolon sayısından daha fazla index’e sahip tabloları listeleyeceğiz.
Script’imiz şu şekilde
create table #tmp1 (DBName sysName, SchemaName sysName, ObjectName sysName, IndexCount int, ColumnCount int)
exec sp_msforeachdb 'use ?;
insert #tmp1
select ''?'' as DBName, SchemaName, ObjectName, IndexCount, count(*) as ColumnCount
from (
select object_schema_name(object_id) as SchemaName
,object_name(object_id) as ObjectName
,count(*) as IndexCount
,object_id
from sys.indexes i
where ObjectProperty(object_id,''IsUserTable'')=1 and index_id>0
group by object_id
)xx
join sys.columns c on c.object_id=xx.object_id
group by SchemaName, ObjectName, IndexCount
having IndexCount>count(*)
'
select * from #tmp1
drop table #tmp1
Örnek bir çıktı aşağıdaki gibi olacaktır.

Örneğin ilk tabloda 2 kolon varken bu tablo 3 adet index’e sahip.
Yukarıdaki script’in sizin ortamlarınızda kaç sonuç döndürdüğünü merak ediyorum. Bu script’i kendi ortamınızda çalıştırıp çıkan sonucu yorum olarak paylaşır mısınız?
c0c28415-23a1-4f15-a851-23099f7fd0a4|0|.0