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

Perbedaan antara indeks GiST dan GIN

Saya rasa saya tidak bisa menjelaskannya lebih baik daripada manual yang sudah dilakukan:

Dalam memilih jenis indeks yang akan digunakan, GiST atau GIN, pertimbangkan perbedaan kinerja berikut:

  • Pencarian indeks GIN sekitar tiga kali lebih cepat daripada GiST

  • Pembuatan indeks GIN membutuhkan waktu sekitar tiga kali lebih lama daripada GiST

  • Indeks GIN sedikit lebih lambat untuk diperbarui daripada indeks GiST, tetapi sekitar 10 kali lebih lambat jika dukungan pembaruan cepat dinonaktifkan [...]

  • Indeks GIN dua hingga tiga kali lebih besar dari indeks GiST

Tautan dan kutipan merujuk ke manual untuk Postgres 9.4. Perkiraan ukuran dan kinerja tampaknya sudah agak ketinggalan zaman. Dengan Postgres 9.4 peluangnya telah bergeser secara substansial mendukung GIN .
Catatan rilis Postgres 9.4 meliputi:

  • Kurangi ukuran indeks GIN (Alexander Korotkov, Heikki Linnakangas) [...]

  • Tingkatkan kecepatan pencarian GIN multi-kunci (Alexander Korotkov, HeikkiLinnakangas)

Perkiraan ukuran dan kinerja telah dihapus dari manual.

Perhatikan bahwa ada kasus penggunaan khusus yang memerlukan satu atau yang lain.

Satu hal yang Anda salah paham:Anda tidak pernah mendapatkan hasil yang salah dengan indeks GiST. Indeks beroperasi pada nilai hash, yang dapat menyebabkan positif palsu dalam indeks. Ini seharusnya hanya menjadi relevan dengan sejumlah besar kata yang berbeda dalam dokumen Anda. Positif palsu dihilangkan setelah memeriksa ulang baris yang sebenarnya dalam hal apa pun. Panduan:

Indeks GiST adalah lossy, artinya indeks dapat menghasilkan kecocokan yang salah, dan perlu untuk memeriksa baris tabel yang sebenarnya untuk menghilangkan kecocokan yang salah tersebut. (PostgreSQL melakukan ini secara otomatis saat dibutuhkan. )

Penekanan saya yang berani.




  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 melakukan agregasi yang sama pada setiap kolom, tanpa mencantumkan kolom?

  2. Bagaimana cara mendapatkan kolom dengan angka yang berurutan dan meningkat, tanpa ada angka yang hilang?

  3. STRING_AGG() Fungsi di PostgreSQL

  4. Heroku dan Rails:Kesalahan Pemuatan Permata dengan Postgres, namun Ditentukan dalam GEMFILE

  5. Mengapa saya bisa membuat tabel dengan PRIMARY KEY pada kolom nullable?