SORU
9 HAZİRAN 2009, Salı


Yabancı Anahtarlar ve Birincil Anahtarlar üzerinde isim ve Dizinler

PostgreSQL otomatik olarak Yabancı Anahtarlar ve Birincil Anahtarlar, dizinler koyacak mı? Nasıl anlayabilirim? Bir tablodaki tüm dizinleri döndürecek bir komut var mı?

CEVAP
9 HAZİRAN 2009, Salı


PostgreSQL otomatik olarak yabancı anahtar ilişkileri başvuran tarafında birincil anahtar ve benzersiz kısıtlamaları üzerinde değil, dizinler oluşturur.

Pg psqlve/görebilirsiniz NOTICE düzey bir mesaj yayacaktır örtülü bir dizin oluşturur ya da sistem açtığında, böylece ne zaman olur görebilirsiniz. Otomatik olarak oluşturulan dizin bir tablo için \d çıkış görünür.

documentation on unique indexes diyor ki:

PostgreSQL otomatik olarak her benzersiz kısıtlama bir dizin ve benzersizlik için birincil anahtar kısıtlaması oluşturur. Böylece, gerekli olan birincil anahtar sütunları için açıkça bir indeks oluşturmak için değil.

ve constraints belgelerine diyor ki:

Referans tablosundan bir satır veya bir GÜNCELLEŞTİRME bir yana SİL başvurulan sütun başvuran bir tarama tablosu için gerektirir satır dizini için eski değeri, genellikle iyi bir fikirdir eşleşen başvuru sütunlar. Bu her zaman gerekli değildir, ve vardır çünkü birçok seçenek için nasıl kullanılabilir dizin, yabancı anahtar ilanı kısıtlama otomatik olarak başvuran bir dizin oluşturmaz sütunlar.

Bu nedenle eğer onları istiyorsan yabancı anahtarları kendine dizinleri oluşturmak zorunda.

Not kullanırsanız, birincil ve yabancı anahtarlar gibi 2 FK gibi bir PK bir M-N tablo almak bir dizin PK ve muhtemelen gerek yok oluştur fazladan dizinler.

Genelde (ya da dahil) başvurma-yan yabancı anahtar sütunları üzerinde bir dizin oluşturmak için iyi bir fikir olsa da, bu gerekli değil. Eklediğiniz her dizin. VİD işlemleri biraz yavaşlar, her INSERT, UPDATE DELETE performans maliyeti ödersiniz. Eğer dizin nadiren kullanılır olması önemli olmayabilir.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Damien Hayes

    Damien Hayes

    11 Mart 2008
  • eisleyhead

    eisleyhead

    11 Ocak 2006
  • Film Riot

    Film Riot

    16 NİSAN 2006