जस्टिन केव ने जो लिखा उसके अलावा, पोस्टग्रेसीक्यू 9.1 के बाद आप किसी भी खोज को LIKE
( ~~
) या ILIKE
( ~~*
), और बेसिक रेगुलर एक्सप्रेशन मैच, ( ) के साथ गति दे सकते हैं ~
। मॉड्यूल pg_trgm द्वारा प्रदान किए गए ऑपरेटर वर्गों का उपयोग GIN या GiST इंडेक्स के साथ उन LIKE
अभिव्यक्तियों को गति देने के लिए करें जो बाएं-एंकर नहीं हैं। एक्सटेंशन इंस्टॉल करने के लिए, प्रति डेटाबेस एक बार चलाएं:
CREATE EXTENSION pg_trgm;
फॉर्म का एक इंडेक्स बनाएं
CREATE INDEX tbl_col_gin_trgm_idx ON tbl USING gin (col gin_trgm_ops);
या:
CREATE INDEX tbl_col_gist_trgm_idx ON tbl USING gist (col gist_trgm_ops);
GIN या GiST इंडेक्स को बनाना और बनाए रखना एक लागत वहन करता है, लेकिन यदि आपकी तालिका में भारी मात्रा में नहीं लिखा गया है, तो यह आपके लिए एक बड़ी विशेषता है।
डीपेज़ ने अपने ब्लॉग में नई सुविधा के बारे में एक उत्कृष्ट लेख लिखा है ।
GIN या GiST?
मैनुअल से ये दो उद्धरण कुछ मार्गदर्शन प्रदान करना चाहिए
GiST और GIN इंडेक्सिंग के बीच का चुनाव GiST और GIN के सापेक्ष प्रदर्शन विशेषताओं पर निर्भर करता है, जिनकी चर्चा कहीं और की जाती है। अंगूठे के नियम के रूप में, GIN सूचकांक GiST सूचकांक की तुलना में तेजी से खोजा जाता है, लेकिन निर्माण या अद्यतन करने के लिए धीमा होता है; इसलिए GIN स्थैतिक डेटा और अक्सर अद्यतन किए गए डेटा के लिए GiST के लिए बेहतर अनुकूल है।
लेकिन दूरी ऑपरेटर के उपयोग के साथ "निकटतम पड़ोसी" प्रकार के प्रश्नों के लिए <->
:
इसे GiST इंडेक्स द्वारा काफी कुशलता से लागू किया जा सकता है, लेकिन GIN इंडेक्स द्वारा नहीं।