यह ऊपर इरविन के उत्तर का पूरक है, लेकिन PostgreSQL इंडेक्स के प्रकारों के एक समूह का समर्थन करता है। ये आम तौर पर परस्पर अनन्य नहीं होते हैं। आप इन के रूप में सोच सकते हैं:
- सूचकांक विधि (btree, GiST, GIN, आदि)। एक चुनें, यदि आवश्यक हो (डिफ़ॉल्ट होने के नाते)
- आंशिक या भरा हुआ। यदि आंशिक जहां एक खंड का उपयोग करें
- प्रत्यक्ष या क्रियाशील। आप फ़ंक्शन के आउटपुट को अनुक्रमित कर सकते हैं।
- अद्वितीय या गैर-अद्वितीय
इन सभी को विभिन्न तरीकों से जोड़ा जा सकता है। आप यहां जो कुछ भी कर रहे हैं, वह अद्वितीय और आंशिक सुविधाओं का उपयोग कर रहा है, जिससे आपको आंशिक अद्वितीय अनुक्रमित मिलें (जो कि आपके लिए बहुत उपयोगी हैं क्योंकि आप पता लगा रहे हैं।
लेकिन मान लीजिए कि आप सब्सेट फ़ील्ड पर एक केस असंवेदनशील इंडेक्स रखना चाहते हैं, जहाँ प्रकार सत्य हो। तब आप एक कार्यात्मक परिभाषा जोड़ेंगे:
CREATE INDEX my_index_name_idx_u ON tbl (lower(subset)) WHERE type;
ध्यान दें कि यह सबसेट विशेषता पर निम्न () फ़ंक्शन के आउटपुट पर एक अद्वितीय सूचकांक बनाता है जहां प्रकार सत्य है।