একটি বিটম্যাপ ফিল্টার শুধু তখন উপকারী যখন এটি সিলেক্টিভ। কোয়েরি অপ্টিমাইজার সিদ্ধান্ত নেয় যখন একটি অপ্টিমাইজড বিটম্যাপ ফিল্টার যথেষ্ট সিলেক্টিভ হয় হেলপফুল হতে এবং কোন অপারেটরগুলোর ওপর ফিল্টারটি প্রয়োগ করা হবে। অপ্টিমাইজার স্টার জয়েনের সকল ডিপার্টমেন্টে অপ্টিমাইজড বিটম্যাপ ফিল্ড করে এবং কস্টিং রুলস ব্যবহার করে সিদ্ধান্ত নেয় যে প্ল্যানটি স্মলেস্ট এস্টিমেটেড ইমপ্লিমেন্টেশন কস্ট প্রদান করে কিনা।
যখন অপ্টিমাইজড বিটম্যাপ ফিল্টার নন-সিলেক্টিভ, কস্ট এস্টিমেট সাধারণত খুব বেশি হয় এবং প্ল্যানটি রিজেক্ট করা হয়। অপ্টিমাইজড বিটম্যাপ ফিল্টার কোথায় লোকেট করা হবে সেটি কনসিডার করার সময়, অপ্টিমাইজার হ্যাশ জয়েন ভ্যারিয়েন্ট খুঁজে বের করে যেগুলো একটি রাইট-ডিপ স্ট্যাক অফ হ্যাশ জয়েন অন্তর্ভুক্ত করে। ডিমেনশন টেবিলের সাথে জয়েনগুলো ইমপ্লিমেন্ট করা হয় সবচেয়ে সিলেক্টিভ জয়েন প্রথমে এক্সিকিউট করার জন্য।
অপারেটর যেটিতে অপ্টিমাইজড বিটম্যাপ ফিল্টার প্রয়োগ করা হয় সেটিতে একটি বিটম্যাপ প্রেডিকেট থাকে PROBE ([Opt_Bitmap1001], {[column_name]} [, 'IN ROW']) ডিজাইনে। বিটম্যাপ প্রেডিকেট নিচের ইনফরমেশন রিপোর্ট করে:
বিটম্যাপ নাম যা বিটম্যাপ অপারেটরে ইন্ট্রোডিউস করা নামের সাথে কোরিলেটেড। প্রিফিক্স 'Opt_' নির্দেশ করে একটি অপ্টিমাইজড বিটম্যাপ ফিল্টার ব্যবহৃত হচ্ছে।
কলাম যেটি প্রোব করা হচ্ছে। এটি वह টার্ম যেটি থেকে ফিল্টার্ড ডেটা ট্রি থ্রু ফ্লো করে।
বিটম্যাপ প্রোব কি ইন-রো অপ্টিমাইজেশন দরকার। যখন হয়, বিটম্যাপ প্রোব IN ROW প্যারামিটার দিয়ে আহ্বান করা হয়। অন্যথায়, এই প্যারামিটার অনুপস্থিত থাকে।
অপ্টিমাইজড বিটম্যাপ ফিল্টারিং রিকোয়ারমেন্ট
অপ্টিমাইজড বিটম্যাপ ফিল্টারিং-এর নিচের রিকোয়ারমেন্ট রয়েছে:
ফ্যাক্ট টেবিলের কমপক্ষে ১০০ পেজ থাকা আশা করা হয়। অপ্টিমাইজার ছোট টেবিলগুলোকে ডিমেনশন টেবিল হিসেবে বিবেচনা করে।
শুধু ইনার জয়েন ফ্যাক্ট টেবিল এবং ডিমেনশন টেবিলের মাঝপথে বিবেচনা করা হয়।
ফ্যাক্ট টেবিল এবং ডিমেনশন টেবিলের মাঝপথে জয়েন প্রেডিকেট একটি সিঙ্গেল কলাম জয়েন হওয়া উচিত কিন্তু প্রাইমারি-কি-টু-ফরেন-কি রিলেশনশিপ হতে হয় না। একটি ইন্টিজার-বেসড কলাম পছন্দ করা হয়।
ডিমেনশনের সাথে জয়েন শুধু তখন বিবেচনা করা হয় যখন ডিমেনশন ইনপুট কার্ডিন্যালিটি ফ্যাক্ট টেবিল থেকে ইনপুট কার্ডিন্যালিটি চেয়ে ছোট হয়।
বিটম্যাপ ফিল্টারিং এবং অপ্টিমাইজড বিটম্যাপ ফিল্টারিং কোয়েরি প্ল্যানে বিটম্যাপ শো প্ল্যান অপারেটর ব্যবহার করে এক্সিকিউট করা হয়। বিটম্যাপ ফিল্টারিং শুধু প্যারালেল কোয়েরি প্ল্যানে ব্যবহৃত হয় যেখানে হ্যাশ বা মার্জ জয়েন ব্যবহৃত হয়। অপ্টিমাইজড বিটম্যাপ ফিল্টারিং শুধু প্যারালেল কোয়েরি প্ল্যানে প্রাসঙ্গিক যেখানে হ্যাশ জয়েন ব্যবহৃত হয়।
উভয় কেসে, বিটম্যাপ ফিল্টার জেনারেট করা হয় বিল্ড ইনপুট (ডিমেনশন টেবিল) সাইডে একটি হ্যাশ জয়েনের; কিন্তু, অ্যাকচুয়াল ফিল্টারিং সাধারণত প্যারাললিজম অপারেটরের ভিতরেই সম্পন্ন হয়, যা প্রোব ইনপুট (ফ্যাক্ট টেবিল) সাইডে হ্যাশ জয়েনের। যখন জয়েন একটি ইন্টিজার কলামের ওপর ভিত্তি করে, ফিল্টারটি ডাইরেক্টলি আরিজিনাল টেবিল বা ইন্ডেক্স স্ক্যান অপারেশনে প্রয়োগ করা যেতে পারে প্যারাললিজম অপারেটর ছাড়া। এই টেকনিককে ইন-রো অপ্টিমাইজেশন বলা হয়।