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

Jauhkan PostgreSQL dari terkadang memilih paket kueri yang buruk

Jika perencana kueri membuat keputusan yang buruk, sebagian besar adalah salah satu dari dua hal:

1. Statistik tidak akurat.

Apakah Anda menjalankan ANALYZE cukup? Juga populer dalam bentuk gabungannya VACUUM ANALYZE . Jika autovacuum aktif (yang merupakan default di Postgres modern), ANALYZE dijalankan secara otomatis. Tapi pertimbangkan:

  • Apakah VACUUM ANALYZE reguler masih direkomendasikan di bawah 9.1?

Jika meja Anda besar dan distribusi data tidak teratur , menaikkan default_statistics_target mungkin membantu. Atau lebih tepatnya, cukup tetapkan target statistik untuk kolom yang relevan (yang ada di WHERE atau JOIN klausa pertanyaan Anda, pada dasarnya):

ALTER TABLE ... ALTER COLUMN ... SET STATISTICS 400;  -- calibrate number

Target dapat diatur dalam kisaran 0 hingga 10.000;

Jalankan ANALYZE lagi setelah itu (pada tabel yang relevan).

2. Setelan biaya untuk perkiraan perencana tidak aktif.

Baca bab Konstanta Biaya Planner dalam manual.

Lihat bab default_statistics_target dan biaya_halaman_acak pada halaman Wiki PostgreSQL yang umumnya membantu ini.

Ada banyak kemungkinan alasan lain, tetapi sejauh ini yang paling umum.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Django JSONField di dalam ArrayField

  2. Apakah ada hit kinerja menggunakan tipe data desimal (MySQL/Postgres)

  3. PostgreSQL -harus muncul di klausa GROUP BY atau digunakan dalam fungsi agregat

  4. Jumlah baris maksimum (dapat digunakan) dalam tabel Postgresql

  5. Bagaimana cara menulis batasan mengenai jumlah baris maksimum di postgresql?