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
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 psql
ve/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.
Nasıl yabancı anahtarlar için destek e...
Yabancı anahtarlar, dizinler oluşturma...
İNT ve VARCHAR birincil anahtarlar ara...
Yabancı Anahtarlar ile MySQL tabloları...
MySQL tüm tablolar, yabancı anahtarlar...