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.