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

Indeks gabungan dengan tiga kunci, apa yang terjadi jika saya meminta melewatkan yang tengah?

Postgres dapat menggunakan kolom non-utama dalam indeks b-tree, tetapi dalam mode yang jauh lebih efisien.

Jika kolom pertama sangat selektif (hanya beberapa baris per A ) maka Anda hampir tidak akan melihat perbedaan kinerja karena salah satu metode akses (bahkan pemindaian berurutan atas set yang dikurangi) murah. Hit kinerja bertambah dengan jumlah baris per A .

Untuk kasus yang Anda jelaskan saya sarankan untuk membuat indeks pada (A, C, B) atau (C, A, B) (pastikan B datang terakhir) untuk mengoptimalkan kinerja. Dengan cara ini Anda mendapatkan kinerja terbaik untuk kueri di (A, B, C) dan pada (A, C) sama.

Berbeda dengan urutan kolom dalam indeks, urutan predikat dalam kueri tidak menjadi masalah.

Kami telah membahas ini dengan sangat rinci di dba.SE:

Perhatikan bahwa ini tidak peduli apakah Anda memimpin dengan A, C atau C, A untuk kasus yang ada:

Ada juga beberapa pertimbangan lain, tetapi pertanyaan Anda tidak memiliki semua detail yang relevan.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Manajemen Koneksi di PostgreSQL:Panduan

  2. Memasukkan string teks dengan hex ke dalam PostgreSQL sebagai byte

  3. Penambahan kumulatif dengan basis dinamis di Postgres

  4. Cara Membatasi Akses ke Database di PostgreSQL

  5. Apakah menambahkan tabel asing dalam klausa WITH memperlambat kueri di PostgreSQL?