Câu trả lời:
Lời giải thích tốt nhất đến từ Tom Lane , tác giả của thuật toán trừ khi tôi nhầm. Xem thêm bài viết trên wikipedia .
Tóm lại, nó hơi giống như quét seq. Sự khác biệt là, thay vì truy cập mọi trang đĩa, chỉ mục bitmap sẽ quét AND và OR các chỉ mục áp dụng cùng nhau và chỉ truy cập các trang đĩa mà nó cần.
Điều này khác với quét chỉ mục, trong đó chỉ mục được truy cập từng hàng theo thứ tự - nghĩa là một trang đĩa có thể được truy cập nhiều lần.
Re: câu hỏi trong bình luận của bạn ... Yep, chính xác là vậy.
Quá trình quét chỉ mục sẽ đi qua từng hàng một, mở đi mở lại các trang đĩa nhiều lần nếu cần thiết (một số tất nhiên sẽ nằm trong bộ nhớ, nhưng bạn hiểu rõ).
Quét chỉ mục bitmap sẽ tuần tự mở danh sách ngắn các trang đĩa và lấy mọi hàng thích hợp trong mỗi hàng (do đó, cái gọi là kiểm tra lại điều kiện bạn thấy trong kế hoạch truy vấn).
Ngoài ra, hãy lưu ý, cách phân cụm / thứ tự hàng ảnh hưởng đến chi phí liên quan với một trong hai phương pháp. Nếu các hàng ở khắp nơi theo thứ tự ngẫu nhiên, chỉ mục bitmap sẽ rẻ hơn. (Và, trên thực tế, nếu họ thực sự tất cả khắp nơi, một seq quét sẽ rẻ nhất, kể từ khi một chỉ số bitmap quét là không phải không có số nguyên cần thiết.)
index-only scan
điểm chỉ cột được lập chỉ mục được truy cập trong truy vấn. trong trường hợp này, index-only scan
không cần truy cập dữ liệu heap (trang dữ liệu): postgresql.org/docs/12/indexes-index-only-scans.html