SQL Server’da Tekrarlayan Index Değerlerini Bulmak
Herkese merhaba,
Bu yazıda SQL Server’da tekrarlayan Index değerlerini bulmak hakkında bilgi vereceğim.
SQL Server’da bazı durumlarda tekrarlayan Index değerlerini bulma ihtiyacınız olabilir.
Aşağıdaki kod yardımıyla bu işlemi rahatlıkla yapabilirsiniz.
SELECT tablo1.tabloAdi, --Tablo Adı
tablo1.indexAdi, --Tekrar Eden 1. Index
tablo1.KolonAdi, --1. Index Kolon Adı
tablo2.indexAdi, --Tekrar Eden 2. Index
tablo2.KolonAdi --2. Index Kolon Adı
FROM
(
SELECT DISTINCT
OBJECT_NAME(i.object_id) tabloAdi,
i.name indexAdi,
(
SELECT DISTINCT
STUFF(
(
SELECT ', ' + k.name
FROM sys.index_columns ik1
INNER JOIN sys.columns k
ON ik1.object_id = k.object_id
AND ik1.column_id = k.column_id
WHERE ik1.index_id = ik.index_id
AND ik1.object_id = i.object_id
AND ik1.index_id = i.index_id
ORDER BY index_column_id
FOR XML PATH('')
),
1,
2,
''
)
FROM sys.index_columns ik
WHERE object_id = i.object_id
AND index_id = i.index_id
) AS KolonAdi
FROM sys.indexes i
INNER JOIN sys.index_columns ik
ON i.object_id = ik.object_id
AND i.index_id = ik.index_id
INNER JOIN sys.objects o
ON i.object_id = o.object_id
WHERE o.is_ms_shipped = 0
) tablo1
INNER JOIN
(
SELECT DISTINCT
OBJECT_NAME(i.object_id) tabloAdi,
i.name indexAdi,
(
SELECT DISTINCT
STUFF(
(
SELECT ', ' + k.name
FROM sys.index_columns ik1
INNER JOIN sys.columns k
ON ik1.object_id = k.object_id
AND ik1.column_id = k.column_id
WHERE ik1.index_id = ik.index_id
AND ik1.object_id = i.object_id
AND ik1.index_id = i.index_id
ORDER BY index_column_id
FOR XML PATH('')
),
1,
2,
''
)
FROM sys.index_columns ik
WHERE object_id = i.object_id
AND index_id = i.index_id
) AS KolonAdi
FROM sys.indexes i
INNER JOIN sys.index_columns ik
ON i.object_id = ik.object_id
AND i.index_id = ik.index_id
INNER JOIN sys.objects o
ON i.object_id = o.object_id
WHERE o.is_ms_shipped = 0
) tablo2
ON tablo1.tabloAdi = tablo2.tabloAdi
AND SUBSTRING(tablo2.KolonAdi, 1, LEN(tablo1.KolonAdi)) = tablo1.KolonAdi
AND
(
tablo1.KolonAdi <> tablo2.KolonAdi
OR
(
tablo1.KolonAdi = tablo2.KolonAdi
AND tablo1.indexAdi <> tablo2.indexAdi
)
);
Kodu çalıştırdığınızda aşağıdaki gibi bir sonuç alacaksınız.
Görüldüğü üzere tekrarlayan Index değerleri bulunmuş oldu.
Herkese çalışma hayatında ve yaşamında başarılar kolaylıklar.