एक बिटमैप फ़िल्टर केवल तभी फायदेमंद होता है जब यह चयनात्मक हो। क्वेरी ऑप्टिमाइज़र तय करता है कि ऑप्टिमाइज़्ड बिटमैप फ़िल्टर कब पर्याप्त रूप से चयनात्मक है ताकि उपयोगी हो और किन ऑपरेटरों पर फ़िल्टर लागू किया जाता है। ऑप्टिमाइज़र स्टार जॉइन के सभी विभागों पर ऑप्टिमाइज़्ड बिटमैप फ़ील्ड करता है और यह तय करने के लिए कॉस्टिंग नियमों का उपयोग करता है कि क्या योजना सबसे छोटे अनुमानित कार्यान्वयन लागत का समर्थन करती है।
जब ऑप्टिमाइज़्ड बिटमैप फ़िल्टर गैर-चयनात्मक होता है, तो लागत अनुमान आमतौर पर बहुत अधिक होता है और योजना को अस्वीकार कर दिया जाता है। यह विचार करते हुए कि योजना में ऑप्टिमाइज़्ड बिटमैप फ़िल्टर कहां लगाए जाएं, ऑप्टिमाइज़र हैश जॉइन वेरिएंट की तलाश करता है जिसमें हैश जॉइन का राइट-डीप स्टैक शामिल होता है। डायमेंशन टेबल के साथ जॉइन को सबसे संभावित चयनात्मक जॉइन को पहले निष्पादित करने के लिए लागू किया जाता है।
जिस ऑपरेटर में ऑप्टिमाइज़्ड बिटमैप फ़िल्टर उपयोग किया जाता है उसमें PROBE ([Opt_Bitmap1001], {[column_name]} [, 'IN ROW']) के डिजाइन में एक बिटमैप प्रेडिकेट शामिल होता है। बिटमैप प्रेडिकेट निम्नलिखित डेटा पर रिपोर्ट करता है:
बिटमैप नाम जो बिटमैप ऑपरेटर में पेश किए गए नाम से संबंधित है। उपसर्ग 'Opt_' इंगित करता है कि ऑप्टिमाइज़्ड बिटमैप फ़िल्टर का उपयोग किया जाता है।
वह कॉलम जिसके विरुद्ध जांच की जाती है। यह वह पद है जिससे फ़िल्टर किया गया डेटा ट्री के माध्यम से प्रवाहित होता है।
क्या बिटमैप प्रोब को इन-रो ऑप्टिमाइज़ेशन की आवश्यकता है। जब ऐसा होता है, तो बिटमैप प्रोब को IN ROW पैरामीटर के साथ लागू किया जाता है। वैकल्पिक रूप से, यह पैरामीटर गायब होता है।
ऑप्टिमाइज़्ड बिटमैप फ़िल्टरिंग आवश्यकताएं
ऑप्टिमाइज़्ड बिटमैप फ़िल्टरिंग की निम्नलिखित आवश्यकताएं हैं:
फैक्ट टेबल में न्यूनतम 100 पेज होने की उम्मीद है। ऑप्टिमाइज़र छोटी टेबल को डायमेंशन टेबल मानता है।
केवल एक फैक्ट टेबल और एक डायमेंशन टेबल के बीच इनर जॉइन पर विचार किया जाता है।
फैक्ट टेबल और डायमेंशन टेबल के बीच जॉइन प्रेडिकेट एक सिंगल कॉलम जॉइन होना चाहिए लेकिन प्राइमरी-की-टू-फॉरेन-की संबंध होने की आवश्यकता नहीं है। एक पूर्णांक-आधारित कॉलम चुना जाता है।
डायमेंशन के साथ जॉइन पर केवल तभी विचार किया जाता है जब डायमेंशन इनपुट कार्डिनैलिटी फैक्ट टेबल से इनपुट कार्डिनैलिटी से छोटी होती है।
बिटमैप फ़िल्टरिंग और ऑप्टिमाइज़्ड बिटमैप फ़िल्टरिंग को क्वेरी प्लान में बिटमैप शो प्लान ऑपरेटर का उपयोग करके निष्पादित किया जाता है। बिटमैप फ़िल्टरिंग केवल समानांतर क्वेरी प्लान में उपयोग की जाती है जिसमें हैश या मर्ज जॉइन उपयोग किए जाते हैं। ऑप्टिमाइज़्ड बिटमैप फ़िल्टरिंग केवल उन समानांतर क्वेरी प्लान के लिए प्रासंगिक है जिनमें हैश जॉइन उपयोग किए जाते हैं।
दोनों मामलों में, बिटमैप फ़िल्टर हैश जॉइन के बिल्ड इनपुट (डायमेंशन टेबल) साइड पर उत्पन्न होता है; हालांकि, वास्तविक फ़िल्टरिंग आमतौर पर पैरेललिज्म ऑपरेटर के भीतर पूरी होती है, जो हैश जॉइन के प्रोब इनपुट (फैक्ट टेबल) साइड पर होता है। जब जॉइन एक पूर्णांक कॉलम पर आधारित होता है, तो फ़िल्टर को मूल टेबल या इंडेक्स स्कैन ऑपरेशन पर सीधे लागू किया जा सकता है बजाय पैरेललिज्म ऑपरेटर के। इस तकनीक को इन-रो ऑप्टिमाइज़ेशन के रूप में जाना जाता है।