Bất kể bạn đã tạo bao nhiêu chỉ số trên mối quan hệ, chỉ một trong số chúng sẽ được sử dụng trong một truy vấn nhất định (chỉ số nào phụ thuộc vào truy vấn, thống kê, v.v.). Vì vậy, trong trường hợp của bạn, bạn sẽ không nhận được lợi thế tích lũy từ việc tạo hai chỉ số cột đơn. Để có được hiệu suất cao nhất từ chỉ mục, tôi khuyên bạn nên sử dụng chỉ mục tổng hợp trên (vị trí, dấu thời gian).
Lưu ý rằng các truy vấn như ... WHERE timestamp BETWEEN smth AND smth
sẽ không sử dụng chỉ mục trên trong khi các truy vấn như ... WHERE location = 'smth'
hoặc ... WHERE location = 'smth' AND timestamp BETWEEN smth AND smth
sẽ. Đó là vì thuộc tính đầu tiên trong chỉ mục rất quan trọng để tìm kiếm và sắp xếp.
Đừng quên thực hiện
ANALYZE;
sau khi tạo chỉ mục để thu thập số liệu thống kê.
Cập nhật: Là @MondKin được đề cập trong các bình luận các truy vấn nhất định thực sự có thể sử dụng một số chỉ mục trên cùng một mối quan hệ. Ví dụ:truy vấn với OR
các mệnh đề như a = 123 OR b = 456
(giả sử rằng có chỉ mục cho cả hai cột). Trong trường hợp này, postgres sẽ thực hiện quét chỉ mục bitmap cho cả hai chỉ mục, xây dựng một tổ hợp các bitmap kết quả và sử dụng nó để quét đống bitmap. Trong một số điều kiện nhất định, cùng một lược đồ có thể được sử dụng cho AND
nhưng thay vì kết hợp sẽ có một giao điểm.