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

Indeks multicolumn pada 3 bidang dengan tipe data yang heterogen

Indeks satu kolom

Postgres dapat menggabungkan beberapa indeks dengan sangat efisien dalam satu kueri dengan pemindaian indeks bitmap . Sebagian besar waktu, indeks yang paling selektif dipilih (atau dua, dikombinasikan dengan pemindaian indeks bitmap) dan sisanya disaring. Setelah kumpulan hasil cukup sempit, tidak efisien untuk memindai lebih banyak indeks.

Indeks multikolom

Masih lebih cepat untuk memiliki indeks multikolom yang cocok dengan sempurna, tetapi tidak berdasarkan urutan besarnya.
Karena Anda ingin menyertakan jenis larik Saya menyarankan untuk menggunakan GIN indeks. AFAIK, kelas operator tidak ada untuk indeks GiST tujuan umum pada tipe array. (Pengecualiannya adalah intarray untuk integer array.)

Untuk memasukkan integer kolom, pertama instal modul tambahan btree_gin , yang menyediakan kelas operator GIN yang diperlukan. Jalankan sekali per database :

CREATE EXTENSION btree_gin;

Maka Anda harus dapat membuat indeks multikolom Anda:

CREATE INDEX tbl_abc_gin_idx ON tbl USING GIN(a, b, c);

Urutan kolom indeks tidak relevan untuk indeks GIN. Panduan:

Indeks GIN multikolom dapat digunakan dengan kondisi kueri yang melibatkan setiap subset kolom indeks. Tidak seperti B-tree atau GiST, efektivitas pencarian indeks adalah sama terlepas dari kolom indeks mana yang digunakan kondisi kueri.

Penelusuran tetangga terdekat

Karena Anda menyertakan geometry PostGis ketik, kemungkinan Anda ingin melakukan pencarian tetangga terdekat, yang Anda perlukan GiST indeks. Dalam hal ini saya sarankan dua indeks:

CREATE INDEX tbl_ac_gist_idx ON tbl USING GiST(a, c);  -- geometry type
CREATE INDEX tbl_bc_gin_idx  ON tbl USING GIN(b, c);

Anda dapat menambahkan integer kolom c ke salah satu atau keduanya. Itu tergantung. Untuk itu, Anda memerlukan btree_gin atau btree_gist atau keduanya, masing-masing.



  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 menonaktifkan integritas referensial di Postgres 8.2?

  2. Amazon RDS untuk Alternatif PostgreSQL - ClusterControl untuk PostgreSQL

  3. Nonaktifkan pemeriksaan kunci asing PostgreSQL untuk migrasi

  4. Antarmuka visual PostgreSQL mirip dengan phpMyAdmin?

  5. Mustahil untuk Menginstal permata PG di mac saya dengan Mavericks