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.

SQL Server’da Tekrarlayan Index Değerlerini Bulmak

Görüldüğü üzere tekrarlayan Index değerleri bulunmuş oldu.

Herkese çalışma hayatında ve yaşamında başarılar kolaylıklar.

356 Kez Okundu

Yavuz Selim Kart

Yazılım ve veri tabanında bildiklerimi anlatmaya gayret ediyorum. Halen birçok programlama dili üzerinde araştırmalar yaparak kendimi geliştiriyorum. Bunlar haricinde Grafik Tasarım ve Wordpress konularına da ilgim bulunmakta. SEO ve Sosyal medya yönetimleri hakkında da bilgim mevcuttur. Kısaca çok çalışmayı seven azimli biriyim.

You may also like...

Yazı kopyalamak yasaktır!