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

Postgresql - Kueri berjalan jauh lebih cepat dengan enable_nestloop=false. Mengapa perencana tidak melakukan hal yang benar?

Jika perencana kueri memilih paket kueri yang kurang optimal, kemungkinan ada informasi yang tidak lengkap atau menyesatkan untuk dikerjakan.

Lihat laman Wiki PostgreSQL ini pada penyetelan server. Terutama perhatikan bab tentang random_page_cost dan default_statistics_target .
Baca juga bab terkait dalam manual di Statistik Digunakan oleh Perencana dan Konstanta Biaya Perencana .

Lebih khusus lagi, mungkin membantu untuk meningkatkan statistics target untuk kolom berikut:

ALTER TABLE postgres.products ALTER COLUMN id SET STATISTICS 1000;
ALTER TABLE postgres.sales_orders ALTER COLUMN retailer_id SET STATISTICS 1000;
ALTER TABLE postgres.sales_orders ALTER COLUMN company_id SET STATISTICS 1000;

ALTER TABLE goods_return_notes ALTER COLUMN retailer_id SET STATISTICS 1000;
ALTER TABLE goods_return_notes ALTER COLUMN company_id SET STATISTICS 1000;

ALTER TABLE retailer_category_leaf_nodes ALTER COLUMN tree_left SET STATISTICS 1000;
ALTER TABLE channels ALTER COLUMN principal_id SET STATISTICS 1000;

Ini terlibat dalam filter yang menghasilkan

Ada lebih . Periksa setiap kolom di mana planer banyak menyimpang dari perkiraan. Standarnya hanya 100. Hanya masuk akal untuk tabel dengan>> 1000 baris. Percobaan dengan pengaturan. Jalankan ANALYZE di tabel setelahnya agar perubahan diterapkan.

Mungkin juga membantu untuk membuat indeks parsial pada postgres(sales_orders.retailer_id) WHERE retailer_id IS NOT NULL (tergantung pada seberapa umum nilai NULL).

Hal lain yang dapat membantu Anda adalah meningkatkan versi ke versi terbaru 9.1. Ada sejumlah peningkatan substansial di bidang ini.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tidak dapat terhubung ke database heroku postgresql dari aplikasi node lokal dengan sekuel

  2. gitlab Error 500 setelah memperbarui saat melihat proyek

  3. Postgres:mengonversi satu baris menjadi beberapa baris (unpivot)

  4. GALAT:tidak dapat mengakses file “$libdir/plpython2” – ERROR:tidak dapat mengakses file “$libdir/plpython3”

  5. Cara Mengaudit Database PostgreSQL