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

Bagaimana saya bisa menggunakan indeks pada tabel yang dipartisi di postgresql 8.3.7

Indeks berfungsi dengan baik untuk melakukan pemindaian hanya pada partisi yang relevan di PostgreSQL. Tapi, Anda harus mengatur semuanya dengan benar agar bisa berfungsi, dan mudah untuk melewatkan satu langkah dalam daftar panjang hal-hal yang didokumentasikan di http://www.postgresql.org/docs/current/static/ddl-partitioning.html

Hal utama yang harus disadari adalah untuk menghindari pemindaian sekuensial, Anda harus memberikan informasi yang cukup ke PostgreSQL sehingga dapat membuktikan beberapa partisi tidak dapat memiliki data yang Anda cari; kemudian mereka dilewati sebagai sumber potensial untuk hasil kueri. Artikel yang Anda tautkan menunjukkan ini sebagai solusi untuk masalah pemindaian seq:"Jika Anda menambahkan batasan rentang ke bidang tanggal setiap partisi, kueri ini dapat dioptimalkan ke dalam satu lingkaran di mana Anda menanyakan partisi "terbaru" terlebih dahulu dan berfungsi mundur sampai Anda menemukan satu nilai yang lebih tinggi dari rentang semua partisi yang tersisa."--tetapi tidak menunjukkan peningkatan rencana yang akan Anda lihat setelah perubahan itu.

Beberapa kesalahan umum yang mungkin pernah Anda lakukan:

-Parameter constraint_exclusion dalam file postgresql.conf tidak aktif secara default. Dengan default itu, Anda tidak akan mendapatkan apa yang Anda harapkan.

-Tidak membuat partisi yang tidak tumpang tindih menggunakan CHECK, yang membuat perencana tidak mengetahui apa yang ada di dalamnya. Anda mungkin melewatkan langkah ini tetapi tetap memasukkan data Anda ke dalam partisi yang tepat dengan benar, perencana tidak akan mengetahuinya.

-Tidak menempatkan indeks pada setiap partisi, hanya membuat satu di tabel master. Ini akan memberi Anda pemindaian berurutan hanya pada partisi yang relevan, jadi tidak seburuk di atas tetapi juga tidak bagus.

Ada beberapa pekerjaan untuk membuat ini semua lebih mudah dalam rilis PostgreSQL yang akan datang (pengaturan constraint_partition cukup otomatis di 8.4 dan semacam otomatisasi pengaturan partisi sedang dikerjakan). Saat ini, jika Anda mengikuti petunjuk dengan hati-hati dan menghindari semua masalah ini, itu akan berhasil.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. cap waktu postgresql ke nilai std::chrono

  2. Django -- Model tidak ada, tetapi Django masih memuatnya

  3. Pilih karakter aneh pada teks, tidak berfungsi dengan operator LIKE

  4. Mengotomatiskan Tugas Harian PostgreSQL Menggunakan Jenkins

  5. Konversi Akses ke PostgreSQL?