PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Postgresql - Truy vấn chạy nhanh hơn rất nhiều với enable_nestloop =false. Tại sao người lập kế hoạch không làm đúng?

Nếu người lập kế hoạch truy vấn chọn các kế hoạch truy vấn không tối ưu, thì rất có thể nó có thông tin không đầy đủ hoặc gây hiểu nhầm để làm việc với.

Xem trang PostgreSQL Wiki này trên máy chủ điều chỉnh. Đặc biệt chú ý đến các chương trên trang_nghiệp_mẫu_cầu default_st Statistics_target .
Cũng đọc các chương tương ứng trong sách hướng dẫn về Thống kê Được sử dụng bởi Người lập kế hoạch Hằng số chi phí của công cụ lập kế hoạch .

Cụ thể hơn, nó có thể giúp tăng statistics target cho các cột sau:

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;

Chúng liên quan đến các bộ lọc dẫn đến

Còn khác . Kiểm tra mọi cột mà máy bào lệch nhiều so với ước tính. Mặc định chỉ là 100. Chỉ có ý nghĩa đối với các bảng có>> 1000 hàng. Thử nghiệm với cài đặt. Chạy ANALYZE trên các bảng sau đó để các thay đổi có hiệu lực.

Nó cũng có thể hữu ích để tạo chỉ mục một phần trên postgres(sales_orders.retailer_id) WHERE retailer_id IS NOT NULL (tùy thuộc vào mức độ phổ biến của giá trị NULL).

Một điều khác có thể giúp bạn là nâng cấp lên phiên bản 9.1 mới nhất. Đã có một số cải tiến đáng kể trong lĩnh vực này.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. CẬP NHẬT toàn bộ hàng trong PL / pgSQL

  2. Lỗi biểu mẫu / cơ sở dữ liệu Django:giá trị quá dài đối với ký tự loại thay đổi (4)

  3. Quy trình làm việc từ xa Symfony2 + Netbeans (feat. Git)

  4. Cập nhật nhiều giá trị jsonb

  5. Làm cách nào để buộc Postgres sử dụng một chỉ mục cụ thể?