PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Postgres dan Indeks pada Kunci Asing dan Kunci Utama

PostgreSQL secara otomatis membuat indeks pada kunci utama dan batasan unik, tetapi tidak pada sisi referensi hubungan kunci asing.

Ketika Pg membuat indeks implisit, ia akan memancarkan NOTICE -pesan level yang dapat Anda lihat di psql dan/atau log sistem, sehingga Anda dapat melihat kapan itu terjadi. Indeks yang dibuat secara otomatis dapat dilihat di \d output untuk tabel juga.

Dokumentasi pada indeks unik mengatakan:

PostgreSQL secara otomatis membuat indeks untuk setiap batasan unik dan batasan kunci utama untuk menegakkan keunikan. Dengan demikian, tidak perlu membuat indeks secara eksplisit untuk kolom kunci utama.

dan dokumentasi tentang batasan mengatakan:

Karena DELETE baris dari tabel referensi atau UPDATE kolom referensi akan memerlukan pemindaian baris tabel referensi yang cocok dengan nilai lama, sering kali merupakan ide bagus untuk mengindeks kolom referensi. Karena ini tidak selalu diperlukan, dan ada banyak pilihan yang tersedia tentang cara mengindeks, deklarasi batasan kunci asing tidak secara otomatis membuat indeks pada kolom referensi.

Oleh karena itu Anda harus membuat indeks sendiri pada kunci asing jika Anda menginginkannya.

Perhatikan bahwa jika Anda menggunakan kunci asing primer, seperti 2 FK sebagai PK dalam tabel M-ke-N, Anda akan memiliki indeks pada PK dan mungkin tidak perlu membuat indeks tambahan apa pun.

Meskipun biasanya ide yang baik untuk membuat indeks pada (atau termasuk) kolom kunci asing sisi referensi Anda, itu tidak diperlukan. Setiap indeks yang Anda tambahkan sedikit memperlambat operasi DML, sehingga Anda membayar biaya kinerja pada setiap INSERT , UPDATE atau DELETE . Jika indeks jarang digunakan, mungkin tidak ada gunanya.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana saya bisa mengekspor skema database di PostgreSQL?

  2. Postgres 9.4 jsonb array sebagai tabel

  3. Untuk pemula, apakah ada banyak perbedaan antara MySQL dan PostgreSQL?

  4. ID penetapan otomatis Rails yang sudah ada

  5. Cara terbaik untuk memilih baris acak PostgreSQL