dataiotech Labs
dbaguidedbaguideDBAdataxtoolsdataopsphere
Script #17
postgresql
Performanceread-onlyMin Version: 10

PostgreSQL'de İndeksi Olmayan Foreign Key'leri Bulma

Referans veren tarafta indeksi bulunmayan foreign key'leri listeler. DELETE/UPDATE yavaşlığı ve kilit sorunlarının sık nedenidir.

#foreign-key#missing-index#locking
postgresql · sql
SELECT c.conrelid::regclass AS table_name,
       c.conname AS fk_name,
       pg_get_constraintdef(c.oid) AS definition
FROM pg_constraint c
WHERE c.contype = 'f'
  AND NOT EXISTS (
    SELECT 1 FROM pg_index i
    WHERE i.indrelid = c.conrelid
      AND (string_to_array(i.indkey::text, ' ')::int2[])[1:array_length(c.conkey, 1)] @> c.conkey
  )
ORDER BY 1, 2;
Operasyonel Notlar & İyileştirme Aksiyonu

Her FK için indeks gerekmez; ana tabloda sık silme/güncelleme yoksa atlanabilir.

Üretim Güvenliği & Çalıştırma Standartları
  • Bu script salt okunur (read-only) teşhis için tasarlanmıştır; doğrudan veri veya şema değişikliği yapmaz.
  • Ağır yük altındaki üretim sunucularında çalıştırmadan önce hedef veritabanı sürümünü (Min. Sürüm: 10) doğrulayın.
  • İlişkili oturumu sonlandırma veya indeks silme gibi yazma etkili aksiyonlar için notlar bölümündeki komutları temkinli uygulayın.