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

Bisakah array PostgreSQL dioptimalkan untuk bergabung?

Tidak, menyimpan FK dalam array bukanlah ide yang baik untuk tabel tujuan umum. Pertama yang terpenting, ada fakta yang Anda sebutkan secara sepintas:Batasan kunci asing untuk elemen array belum diterapkan (belum). Ini saja harus membatalkan ide.

Ada upaya untuk mengimplementasikan fitur untuk Postgres 9.3 yang dihentikan oleh masalah kinerja yang serius. Lihat utas ini di pgsql-hackers.

Selain itu, sementara kinerja baca dapat ditingkatkan dengan array untuk kasus penggunaan tertentu, kinerja tulis menurun. Pikirkanlah:Untuk menyisipkan, memperbarui, atau menghapus satu elemen dari larik panjang, Anda sekarang harus menulis versi baris baru dengan seluruh larik untuk setiap elemen yang diubah. Dan saya juga melihat persaingan kunci yang serius di depan.

Jika tabel Anda hanya baca , idenya mulai lebih masuk akal. Tapi kemudian saya akan mempertimbangkan tampilan terwujud dengan denormalisasi array di atas implementasi banyak-ke-banyak yang dinormalisasi:

Saat melakukannya, MV dapat menyertakan semua tabel gabungan dan menghasilkan satu tabel datar untuk kinerja membaca yang lebih baik (untuk kasus penggunaan umum). Dengan cara ini Anda mendapatkan integritas referensial dan kinerja baca (dan tulis) yang baik - dengan biaya overhead dan penyimpanan tambahan untuk mengelola MV.




  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 cara mengatur PostgreSQL untuk Play 2.0?

  2. Hibernasi penggunaan dengan banyak utas

  3. Gabung luar kiri bertindak seperti gabung dalam

  4. Postgres 9.4:Sertakan kolom saudara di setiap hasil larik jsonb

  5. Postgres Insert Into View Rule dengan Returning Clause