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

Postgres menggabungkan beberapa Indeks

Saya tidak tahu apakah Pg dapat menggabungkan indeks GiST dan indeks b-tree biasa dengan pemindaian indeks bitmap, tetapi saya kira tidak. Anda mungkin mendapatkan hasil terbaik tanpa menambahkan user_id kolom ke indeks GiST Anda (dan akibatnya membuatnya lebih besar dan lebih lambat untuk kueri lain yang tidak menggunakan user_id ).

Sebagai eksperimen, Anda dapat:

CREATE EXTENSION btree_gist;
CREATE INDEX ix_coords_and_user_id ON test USING GIST (coords, user_id);

yang kemungkinan menghasilkan indeks besar, tetapi mungkin meningkatkan kueri itu - jika berhasil. Ketahuilah bahwa mempertahankan indeks seperti itu akan sangat memperlambat INSERT dan UPDATE s. Jika Anda membuang ix_coords yang lama kueri Anda akan menggunakan ix_coords_and_user_id bahkan jika mereka tidak memfilter di user_id , tetapi akan lebih lambat dari ix_coords . Menjaga keduanya akan membuat INSERT dan UPDATE pelambatan bahkan lebih buruk.

Lihat btree-gist

(Dihapus oleh edit ke pertanyaan yang mengubah pertanyaan sepenuhnya; ketika ditulis, pengguna memiliki indeks multikolom, mereka sekarang telah dipecah menjadi dua yang terpisah ):

Anda sepertinya tidak memfilter atau mengurutkan user_id , hanya create_date . Pg tidak akan (tidak bisa?) hanya menggunakan istilah kedua dari indeks multi-kolom seperti (user_id, create_date) , itu perlu menggunakan item pertama juga.

Jika Anda ingin mengindeks create_date , buat indeks terpisah untuknya. Jika Anda menggunakan dan memerlukan (user_id, create_date) indeks dan biasanya tidak hanya menggunakan user_id sendiri, lihat apakah Anda dapat membalikkan urutan kolom. Buat dua indeks independen secara bergantian, (user_id) dan (create_date) . Ketika kedua kolom diperlukan, Pg dapat menggabungkan dua indeks independen menggunakan pemindaian indeks bitmap.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tampilan Terwujud PostgreSQL

  2. Perbarui nilai kolom PostgreSQL

  3. Penerapan dan Penskalaan PostgreSQL v13 dengan ClusterControl 1.8.2

  4. Peningkatan multi-nilai PostgreSQL

  5. ResultTransformer dengan createSQLQuery tidak memaksa camelCase di bidang entitas