पृष्ठों का बिटमैप प्रत्येक क्वेरी के लिए गतिशील रूप से बनाया गया है। इसे कैश्ड या पुन:उपयोग नहीं किया जाता है, और बिटमैप इंडेक्स स्कैन के अंत में छोड़ दिया जाता है।
पृष्ठ बिटमैप को पहले से बनाने का कोई मतलब नहीं है क्योंकि इसकी सामग्री क्वेरी विधेय पर निर्भर करती है ।
मान लें कि आप x=1 and y=2
खोज रहे हैं . आपके पास x
. पर b-tree अनुक्रमणिकाएं हैं और y
. PostgreSQL x
को संयोजित नहीं करता है और y
बिटमैप में फिर बिटमैप खोजें। यह इंडेक्स x
. को स्कैन करता है x=1
. वाले सभी पृष्ठों के पृष्ठ पते के लिए और एक बिटमैप बनाता है जहां वे पृष्ठ हो सकते हैं जिनमें x=1
. हो सकता है सच हैं। फिर यह y
. को स्कैन करता है पृष्ठ पतों की तलाश में जहां y
बराबर हो सकता है 2
, उसी से बिटमैप बनाना। फिर यह उन्हें उन पृष्ठों को खोजने के लिए देता है जहां दोनों x=1
और y=2
सच हो सकता है। अंत में, यह तालिका को स्वयं स्कैन करता है, केवल उन पृष्ठों को पढ़ता है जिनमें उम्मीदवार मान हो सकते हैं, प्रत्येक पृष्ठ को पढ़ना और केवल पंक्तियों को रखना जहां x=1 and y=2
।
अब, यदि आप कैश्ड, पूर्व-निर्मित बिटमैप इंडेक्स जैसी किसी चीज़ की तलाश कर रहे हैं, तो PostgreSQL 9.5 में ऐसा कुछ है:BRIN अनुक्रमणिका . ये बहुत बड़ी तालिकाओं के लिए अभिप्रेत हैं, और तालिका की श्रेणियों को खोजने का एक तरीका प्रदान करते हैं जिन्हें छोड़ दिया जा सकता है क्योंकि वे जानते हैं कि उनमें वांछित मान नहीं है।