ऐसा तब होता है जब आपने "intarray इंस्टॉल किया हो। "एक्सटेंशन। आइए इसका परीक्षण करें:
drop extension intarray;
explain analyze
select * from test_intarray where codes @> array[123];
-- Uses "Bitmap Index Scan on test_intarray_idx"
"इंटरे" एक्सटेंशन पूर्णांक सरणियों के लिए अपने स्वयं के ऑपरेटर प्रदान करता है, जैसे कि @>
, जबकि सूचकांक को जेनेरिक सरणी ऑपरेटरों के साथ काम करने के लिए डिज़ाइन किया गया है। यह स्कीमा-योग्य ऑपरेटरों का उपयोग करके प्रदर्शित किया जा सकता है:
create extension intarray;
explain analyze
select * from test_intarray where codes @> array[123];
-- Uses "Seq Scan on test_intarray"
explain analyze
select * from test_intarray where codes operator([email protected]>) array[123];
-- Uses "Bitmap Index Scan on test_intarray_idx"
अधिक विवरण के लिए यह चर्चा देखें:इंटरेरे मॉड्यूल से ओवरलोडेड &&ऑपरेटर इंडेक्स के उपयोग को रोकता है।
यदि आप अभी भी "इंटरे" एक्सटेंशन का लाभ लेना चाहते हैं, तो आप एक इंडेक्स बनाते समय इसकी अपनी ऑपरेटर क्लास "gin__int_ops" निर्दिष्ट कर सकते हैं (डिफ़ॉल्ट "array_ops" के बजाय):
create index test_intarray_idx2 on test_intarray using GIN (codes gin__int_ops);
explain analyze
select * from test_intarray where codes @> array[123];
-- Uses "Bitmap Index Scan on test_intarray_idx2"