Để 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