PostgreSQL
 sql >> डेटाबेस >  >> RDS >> PostgreSQL

लोअर लाइक बनाम आईलाइक

उत्तर पोस्टग्रेज़ संस्करण, एन्कोडिंग और लोकेल जैसे कई कारकों पर निर्भर करता है - LC_COLLATE विशेष रूप से।

बेयर एक्सप्रेशन lower(description) LIKE '%abc%' आमतौर पर description ILIKE '%abc%' . से थोड़ा तेज होता है , और या तो समकक्ष रेगुलर एक्सप्रेशन से थोड़ा तेज़ है:description ~* 'abc' . अनुक्रमिक स्कैन के लिए यह महत्वपूर्ण है जहां प्रत्येक परीक्षण पंक्ति के लिए अभिव्यक्ति का मूल्यांकन किया जाना है।

लेकिन आपके जैसे बड़े टेबल के लिए आपके उत्तर में निश्चित रूप से एक इंडेक्स का उपयोग किया जाएगा। मनमानी पैटर्न के लिए (न केवल बाएं-एंकर) मैं अतिरिक्त मॉड्यूल pg_trgm का उपयोग करके एक ट्रिग्राम इंडेक्स का सुझाव देता हूं . फिर हम सेकंड के बजाय मिलीसेकंड के बारे में बात करते हैं और उपरोक्त भावों के बीच का अंतर शून्य हो जाता है।

GIN और GiST इंडेक्स (gin_trgm_ops . का इस्तेमाल करके) या gist_trgm_ops ऑपरेटर वर्ग) समर्थन LIKE (~~ ), ILIKE (~~* ), ~ , ~* (और कुछ और प्रकार) एक जैसे। description . पर ट्राइग्राम GIN इंडेक्स के साथ (आमतौर पर जीआईएसटी से बड़ा, लेकिन पढ़ने के लिए तेज़), आपकी क्वेरी description ILIKE 'case_insensitive_pattern' का उपयोग करेगी ।

संबंधित:

  • PostgreSQL क्वेरी प्रदर्शन विविधताओं की तरह
  • स्वतः पूर्ण फ़ील्ड के लिए समान UTF-8 स्ट्रिंग्स

Postgres में पैटर्न मिलान के लिए मूल बातें:

  • PostgreSQL में LIKE, SIMILAR TO या रेगुलर एक्सप्रेशन से मिलान करने वाला पैटर्न

उक्त ट्रिग्राम इंडेक्स के साथ काम करते समय यह आमतौर पर . होता है साथ काम करने के लिए अधिक व्यावहारिक:

description ILIKE '%abc%'

या केस-असंवेदनशील रेगेक्सपी ऑपरेटर के साथ (बिना % वाइल्डकार्ड):

description ~* 'abc'

(description) . पर एक इंडेक्स lower(description) . पर प्रश्नों का समर्थन नहीं करता है जैसे:

lower(description) LIKE '%abc%'

और इसके विपरीत।

lower(description) . पर विधेय के साथ विशेष रूप से , एक्सप्रेशन इंडेक्स थोड़ा बेहतर विकल्प है।

अन्य सभी मामलों में, (description) . पर एक अनुक्रमणिका बेहतर है क्योंकि यह दोनों का समर्थन करता है केस-संवेदी और असंवेदनशील विधेय।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. आप एक साथ काम करने के लिए PyPy, Django और PostgreSQL कैसे प्राप्त करते हैं?

  2. PostgreSQL द्वारा पेश किया गया JSONB की व्याख्या

  3. हाइबरनेट के साथ मानचित्रण सरणी

  4. PostgreSQL कैसे देखें कि कौन से प्रश्न चले हैं

  5. PostgreSQL क्वेरी सीमा 1 के साथ बहुत धीमी है