Thay đổi truy vấn thành
WHERE NOT emails."$$meta.deleted" = FALSE
AND (emails."$$meta.created", emails.key) >
('2018-02-13T14:30:35.679075Z', '8c0a3151-bf17-490f-8124-d93f7482624f')
và sử dụng chỉ mục này:
CREATE INDEX ON emails ("$$meta.created", key)
WHERE NOT emails."$$meta.deleted";
Giải thích: OR
là một vấn đề về hiệu suất
. Bằng cách viết lại nó dưới dạng so sánh từ vựng của các cặp, bạn sẽ loại bỏ OR
và quét chỉ mục đơn giản sẽ tìm thấy các hàng một cách hiệu quả. PostgreSQL không còn bị cám dỗ sử dụng chỉ mục hỗ trợ ORDER BY
.