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

Truy vấn PostgreSQL cực kỳ chậm với mệnh đề ORDER và LIMIT

Khi bạn có cả LIMIT và ORDER BY, trình tối ưu hóa đã quyết định sẽ nhanh hơn nếu bạn lướt qua các bản ghi chưa được lọc trên foo theo phím giảm dần cho đến khi nó nhận được năm kết quả phù hợp với phần còn lại của tiêu chí. Trong các trường hợp khác, nó chỉ đơn giản là chạy truy vấn dưới dạng một vòng lặp lồng nhau và trả về tất cả các bản ghi.

Nói thẳng ra, tôi muốn nói rằng vấn đề là PG không mò mẫm khớp phân phối các id khác nhau và đó là lý do tại sao kế hoạch là rất tối ưu.

Đối với các giải pháp khả thi:Tôi sẽ giả sử rằng bạn đã chạy ANALYZE gần đây. Nếu không, hãy làm như vậy. Điều đó có thể giải thích tại sao thời gian ước tính của bạn cao ngay cả trên phiên bản trả về nhanh. Nếu sự cố vẫn tiếp diễn, có thể chạy ORDER BY dưới dạng lựa chọn phụ và nhấn vào LIMIT trong một truy vấn bên ngoài.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tối ưu hóa truy vấn trong PostgreSQL. GIẢI THÍCH Khái niệm cơ bản - Phần 3

  2. Làm thế nào để giữ gìn trật tự của con cái xuất hiện sau cha mẹ của chúng

  3. Làm cách nào để chuyển dữ liệu từ AWS Postgres RDS sang S3 (sau đó là Redshift)?

  4. PostgreSQL 11 - Thủ tục

  5. Chuyển đổi loại. Tôi phải làm gì với giá trị PostgreSQL OID trong libpq trong C?