Tùy thuộc vào các điều kiện, về mặt logic, có thể không thể sử dụng bất kỳ chỉ mục nào để trợ giúp một điều kiện phức tạp bằng cách sử dụng OR
biểu thức.
Giống như MySQL, PostgreSQL 8.0 và các trạng thái cũ hơn trong tài liệu về chỉ mục của chúng :
Với PostgreSQL 8.1, điều này đã thay đổi .
Tuy nhiên, nếu điều này không hữu ích, bạn có thể sử dụng UNION
giải pháp bạn đã thử (đây là giải pháp phổ biến cho người dùng MySQL, giải pháp này tiếp tục có giới hạn một chỉ mục cho mỗi bảng).
Bạn có thể sắp xếp các kết quả của UNION
nhưng bạn phải sử dụng dấu ngoặc đơn để chỉ định rằng ORDER BY
áp dụng cho kết quả của UNION
, không chỉ đến truy vấn con cuối cùng trong chuỗi.
(SELECT ... )
UNION
(SELECT ... )
UNION
(SELECT ... )
ORDER BY columnname;
Tôi hi vọng cái này giúp được; Tôi không phải là chuyên gia về trình tối ưu hóa PostgreSQL. Bạn có thể thử tìm kiếm trong kho lưu trữ danh sách gửi thư hoặc hỏi trên kênh IRC .