Bộ lọc bitmap chỉ có lợi nếu nó có tính chọn lọc. Trình tối ưu hóa truy vấn quyết định thời điểm bộ lọc bitmap được tối ưu hóa đủ chọn lọc để hữu ích và bộ lọc được sử dụng cho toán tử nào. Trường tối ưu hóa trường các bộ lọc bitmap được tối ưu hóa trên tất cả các phòng ban của một liên kết sao và sử dụng các quy tắc chi phí để quyết định xem kế hoạch có hỗ trợ chi phí thực hiện ước tính nhỏ nhất hay không.
Khi bộ lọc bitmap được tối ưu hóa không được lựa chọn, ước tính chi phí thường quá cao và kế hoạch bị từ chối. Khi xem xét vị trí để xác định vị trí các bộ lọc bitmap được tối ưu hóa trong kế hoạch, các chế độ xem của trình tối ưu hóa cho các biến thể tham gia băm bao gồm một ngăn xếp sâu bên phải các liên kết băm. Các phép nối với bảng thứ nguyên được triển khai để thực hiện phép nối có thể có chọn lọc nhất trước tiên.
Toán tử trong đó bộ lọc bitmap được tối ưu hóa được sử dụng bao gồm một vị từ bitmap trong thiết kế của PROBE ([Opt_Bitmap1001], {[column_name]} [, ‘IN ROW’]). Vị từ bitmap báo cáo về dữ liệu sau:
-
Tên bitmap tương quan với tên được giới thiệu trong toán tử Bitmap. Tiền tố ‘Opt_’ biểu thị bộ lọc bitmap được tối ưu hóa được sử dụng.
-
Cột thăm dò đối diện với. Đây là thuật ngữ mà từ đó dữ liệu được lọc chảy qua cây.
-
Đầu dò bitmap có cần tối ưu hóa theo hàng hay không. Khi đúng như vậy, đầu dò bitmap được gọi với tham số IN ROW. Ngoài ra, thông số này bị thiếu.
Yêu cầu lọc bản đồ bit được tối ưu hóa
Lọc bitmap được tối ưu hóa có các yêu cầu sau -
-
Bảng dữ kiện dự kiến có tối thiểu 100 trang. Trình tối ưu hóa đã coi các bảng nhỏ hơn là bảng thứ nguyên.
-
Chỉ có các phép nối bên trong giữa bảng dữ kiện và bảng thứ nguyên mới được xem xét.
-
Vị từ nối giữa bảng dữ kiện và bảng thứ nguyên phải là một phép nối cột duy nhất nhưng không yêu cầu phải là mối quan hệ khóa chính-khóa-ngoại. Cột dựa trên số nguyên được chọn.
-
Các phép nối có thứ nguyên chỉ được xử lý khi các số lượng đầu vào của thứ nguyên nhỏ hơn số lượng đầu vào từ bảng dữ kiện.
Lọc bitmap và lọc bitmap được tối ưu hóa được thực thi trong kế hoạch truy vấn bằng cách sử dụng toán tử kế hoạch hiển thị bitmap. Tính năng lọc bitmap chỉ được sử dụng trong các kế hoạch truy vấn song song trong đó các phép nối băm hoặc hợp nhất được sử dụng. Tính năng lọc bitmap được tối ưu hóa chỉ phù hợp với các kế hoạch truy vấn song song trong đó các phép nối băm được sử dụng.
Trong cả hai trường hợp, bộ lọc bitmap được tạo ở phía đầu vào bản dựng (bảng thứ nguyên) của phép nối băm; nhưng, quá trình lọc thực tế thường được hoàn thành trong toán tử Parallelism, nằm ở phía đầu vào thăm dò (bảng dữ kiện) của phép nối băm. Khi phép nối dựa trên một cột số nguyên, bộ lọc có thể được sử dụng trực tiếp cho bảng gốc hoặc thao tác quét chỉ mục thay vì toán tử Parallelism. Kỹ thuật này được gọi là tối ưu hóa trong hàng.