Anda harus menggunakan GiST jika Anda ingin menggunakan metode indeks apa pun selain indeks b-tree biasa (atau indeks hash, tetapi seharusnya tidak benar-benar digunakan). Indeks PostGIS membutuhkan GiST.
Indeks B-tree hanya dapat digunakan untuk operasi dasar yang melibatkan persamaan atau pengurutan, seperti =
, <
, <=
, >
, >=
, <
, BETWEEN
dan IN
. Meskipun Anda dapat membuat indeks b-tree pada objek geomtery (titik, wilayah, dll), itu hanya dapat benar-benar digunakan untuk kesetaraan sebagai perbandingan pemesanan seperti >
umumnya tidak berarti untuk objek seperti itu. Indeks GiST diperlukan untuk mendukung perbandingan yang lebih kompleks dan umum seperti "berisi", "berpotongan", dll.
Anda dapat menggunakan btree_gist
ekstensi
untuk mengaktifkan pengindeksan b-tree untuk GiST. Ini jauh lebih lambat daripada indeks b-tree biasa, tetapi memungkinkan Anda untuk membuat indeks multi-kolom yang berisi tipe khusus GiST dan tipe reguler seperti text
, integer
, dll.
Dalam situasi ini Anda benar-benar perlu menggunakan explain analyze
(explain.depesz.com
berguna untuk ini) untuk memeriksa bagaimana Pg menggunakan berbagai indeks dan kombinasi indeks yang Anda buat. Coba pengurutan kolom yang berbeda dalam indeks multi-kolom, dan lihat apakah dua atau lebih indeks terpisah lebih efektif.
Saya sangat curiga bahwa Anda akan mendapatkan hasil terbaik dengan indeks GiST multikolom dalam kasus ini, tetapi saya akan mencoba beberapa kombinasi indeks dan pengurutan kolom indeks yang berbeda untuk dilihat.