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

Tối ưu hóa truy vấn Postgres (buộc quét chỉ mục)

Để thử nghiệm mục đích bạn có thể buộc sử dụng chỉ mục bằng cách "tắt" quét tuần tự - tốt nhất chỉ trong phiên hiện tại của bạn:

SET enable_seqscan = OFF;

Đừng không sử dụng điều này trên một máy chủ hiệu quả. Chi tiết trong sách hướng dẫn tại đây.

Tôi đã trích dẫn "vô hiệu hóa", bởi vì bạn thực sự không thể tắt tính năng quét bảng tuần tự. Nhưng bất kỳ tùy chọn có sẵn nào khác hiện thích hợp hơn cho Postgres. Điều này sẽ chứng minh rằng chỉ mục đa cột trên (metric_id, t) can được sử dụng - chỉ không hiệu quả như một chỉ mục trên cột đầu.

Bạn có thể nhận được kết quả tốt hơn bằng cách chuyển đổi thứ tự của các cột trong PRIMARY KEY của bạn (và chỉ mục được sử dụng để triển khai nó phía sau bức màn) thành (t, metric_id) . Hoặc tạo một bổ sung lập chỉ mục với các cột được đảo ngược như vậy.

  • Chỉ số tổng hợp có tốt cho các truy vấn trên trường đầu tiên không?

Thông thường, bạn không phải buộc các kế hoạch truy vấn tốt hơn bằng cách can thiệp thủ công. Nếu đặt enable_seqscan = OFF dẫn đến một nhiều kế hoạch tốt hơn, một cái gì đó có thể không đúng trong cơ sở dữ liệu của bạn. Hãy xem xét câu trả lời có liên quan này:

  • Giữ cho PostgreSQL đôi khi chọn một kế hoạch truy vấn không tốt


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Kế hoạch truy vấn Postgres tại sao ước tính Hàng quá sai

  2. K-Nearest Neighbor Query trong PostGIS

  3. Khóa chính tổng hợp trong django

  4. Các từ khóa NGAY LẬP TỨC, ỔN ĐỊNH và VOLATILE ảnh hưởng đến hành vi của chức năng như thế nào?

  5. Cách hiển thị cài đặt hiện tại cho đầu ra rỗng trong PostgreSQL (psql)