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

पोस्टग्रेएसक्यूएल गिनती पाठ में कितनी बार सबस्ट्रिंग होती है

मैं इस उत्तर की जाँच करने का अत्यधिक सुझाव दूंगा जिसे मैंने पोस्ट किया था "आप PostgreSQL का उपयोग करके एंकर स्ट्रिंग की घटनाओं की गणना कैसे करते हैं?" . चुना गया उत्तर regexp_replace() . के अनुकूलित संस्करण की तुलना में बड़े पैमाने पर धीमा दिखाया गया था . पंक्तियों को बनाने और कुल मिलाकर चलाने का ओवरहेड बस बहुत अधिक है।

ऐसा करने का सबसे तेज़ तरीका इस प्रकार है...

SELECT
  (length(str) - length(replace(str, replacestr, '')) )::int
  / length(replacestr)
FROM ( VALUES
  ('foobarbaz', 'ba')
) AS t(str, replacestr);

यहां हम

  1. स्ट्रिंग की लंबाई लें, L1
  2. L1 से घटाएं हटाए गए सभी प्रतिस्थापनों के साथ स्ट्रिंग की लंबाई L2 L3 get प्राप्त करने के लिए स्ट्रिंग की लंबाई में अंतर।
  3. विभाजित करें L3 घटनाओं . प्राप्त करने के लिए प्रतिस्थापन की लंबाई से

तुलना के लिए यह लगभग पांच गुना तेज . है regexp_matches() . का उपयोग करने की विधि की तुलना में जो इस तरह दिखता है।

SELECT count(*)
FROM ( VALUES
  ('foobarbaz', 'ba')
) AS t(str, replacestr)
CROSS JOIN LATERAL regexp_matches(str, replacestr, 'g');


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Postgresql में जहां क्लॉज में एक उपनाम कॉलम का उपयोग करना

  2. PostgreSQL ट्रिगर और संग्रहीत कार्य मूल बातें

  3. PostgreSQL के EXPLAIN ANALYZE का MySQL समतुल्य क्या है?

  4. रेल में एकाधिक डेटाबेस कनेक्शन

  5. PostgreSQL + हाइबरनेट + स्प्रिंग ऑटो डेटाबेस बनाएँ