Bản đồ bit của các trang được tạo động cho mỗi truy vấn. Nó không được lưu vào bộ nhớ cache hoặc được sử dụng lại và bị loại bỏ khi kết thúc quá trình quét chỉ mục bitmap.
Không hợp lý khi tạo trước bitmap của trang vì nội dung của nó phụ thuộc vào các vị từ truy vấn .
Giả sử bạn đang tìm kiếm x=1 and y=2
. Bạn có các chỉ mục b-tree trên x
và y
. PostgreSQL không kết hợp x
và y
vào một bitmap sau đó tìm kiếm bitmap. Nó quét chỉ mục x
cho địa chỉ trang của tất cả các trang có x=1
và tạo một bitmap trong đó các trang có thể chứa x=1
là sự thật. Sau đó, nó quét y
tìm kiếm địa chỉ trang tại đó y
có thể bằng 2
, tạo một bitmap từ đó. Sau đó, nó VÀ chúng để tìm các trang có cả x=1
và y=2
có thể đúng. Cuối cùng, nó tự quét bảng, chỉ đọc các trang có thể chứa các giá trị ứng cử viên, đọc từng trang và chỉ giữ lại các hàng có x=1 and y=2
.
Bây giờ, nếu bạn đang tìm kiếm thứ gì đó giống như một chỉ mục bitmap được tạo sẵn trong bộ nhớ cache, thì có một thứ như vậy trong PostgreSQL 9.5: Chỉ mục BRIN . Chúng dành cho các bảng rất lớn và cung cấp một cách để tìm các phạm vi của bảng có thể bị bỏ qua vì chúng được biết là không chứa giá trị mong muốn.