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

Postgres GIST vs indeks Btree

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.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Psycopg2 menggunakan memori pada kueri pemilihan besar

  2. Bagaimana sintaks INSERT ... ON CONFLICT (id) DO UPDATE ... digunakan dengan ID urutan?

  3. pg_stat_activity tidak diperbarui dalam prosedur atau transaksi

  4. Server menutup koneksi secara tidak terduga saat menyambung ke Azure Postgres

  5. Meningkatkan kinerja ORDER BY pada jsonb cross join dengan inner join group by