SQL Server’da Tablolara Bağlı Indexleri Listeleme
Herkese merhaba,
Bu yazıda SQL Server’da tablolara bağlı indexleri listelemeyle ilgili bilgi vermeye çalışacağım.
SQL Server’da bazı durumlarda tablolara bağlı indexleri listelemek isteyebilirsiniz.
Aşağıdaki kodu kullanarak siz de bu işlemi rahatlıkla yapabilirsiniz.
SELECT QUOTENAME(t.name) AS [Tablo Adı],
QUOTENAME(i.name) AS [Index Adı],
i.is_primary_key AS [Otomatik Artanmı],
STUFF(REPLACE(REPLACE(
(
SELECT QUOTENAME(c.name) + CASE
WHEN ic.is_descending_key = 1 THEN
' DESC'
ELSE
''
END AS [data()]
FROM sys.index_columns AS ic
INNER JOIN sys.columns AS c
ON ic.object_id = c.object_id
AND ic.column_id = c.column_id
WHERE ic.object_id = i.object_id
AND ic.index_id = i.index_id
AND ic.is_included_column = 0
ORDER BY ic.key_ordinal
FOR XML PATH
),
'<row>',
', '
),
'</row>',
''
),
1,
2,
''
) AS [Index Alan Bilgileri],
STUFF(REPLACE(REPLACE(
(
SELECT QUOTENAME(c.name) AS [data()]
FROM sys.index_columns AS ic
INNER JOIN sys.columns AS c
ON ic.object_id = c.object_id
AND ic.column_id = c.column_id
WHERE ic.object_id = i.object_id
AND ic.index_id = i.index_id
AND ic.is_included_column = 1
ORDER BY ic.index_column_id
FOR XML PATH
),
'<row>',
', '
),
'</row>',
''
),
1,
2,
''
) AS [Index Include Bilgileri]
FROM sys.tables AS t
INNER JOIN sys.indexes AS i
ON t.object_id = i.object_id
LEFT JOIN sys.dm_db_index_usage_stats AS u
ON i.object_id = u.object_id
AND i.index_id = u.index_id
WHERE t.is_ms_shipped = 0
AND t.name LIKE '%'
AND i.type <> 0
ORDER BY i.name;
Yukarıdaki kod bloğunu çalıştırdığınızda aşağıdaki sonucu göreceksiniz.
Görüldüğü üzere tablolara bağlı indexler listelenmiş oldu.
Herkese çalışma hayatında ve yaşamında başarılar kolaylıklar.