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

REGEXP प्रदर्शन (LIKE और =के साथ तुलना करें)

regexp के संबंध में

regexp कभी नहीं . कर सकता है MySQL में अनुक्रमणिका का उपयोग करें।
= एक अनुक्रमणिका का उपयोग करेगा यदि:

  • कॉलम पर एक इंडेक्स घोषित किया गया है;
  • कॉलम के मानों में पर्याप्त कार्डिनैलिटी है (यदि +/- 20% से अधिक पंक्तियाँ मेल खाती हैं, तो MySQL एक इंडेक्स का उपयोग नहीं करेगा, क्योंकि उस स्थिति में एक पूर्ण टेबल स्कैन करना तेज़ है। );
  • उसी तालिका पर कोई अन्य अनुक्रमणिका बेहतर अनुकूल नहीं है (MySQL प्रति उप-चयन प्रति तालिका केवल एक अनुक्रमणिका का उपयोग कर सकता है);

इन और कुछ अन्य गूढ़ चेतावनियों को ध्यान में रखते हुए एक = तुलना बहुत है एक रेगेक्सपी से तेज।

इस तरह के संबंध में

यदि वाइल्डकार्ड पहला वर्ण नहीं है, तो LIKE एक अनुक्रमणिका का उपयोग कर सकता है।

SELECT * FROM t WHERE a LIKE 'abc'   <<-- (case insensitive `=`) can use an index
SELECT * FROM t WHERE a LIKE 'abc%'  <<-- can use an index
SELECT * FROM t WHERE a LIKE 'a%'    <<-- can use an index, depending on cardinality
SELECT * FROM t WHERE a LIKE '%a%'   <<-- cannot use an index
SELECT * FROM t WHERE a LIKE '_agf'  <<-- cannot use an index

like . का प्रदर्शन जब किसी इंडेक्स का उपयोग करना = . के बहुत करीब हो (पंक्तियों की समान संख्या मानते हुए)।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. कोडनिर्देशक सक्रिय रिकॉर्ड में क्वेरी डालने के बाद अंतिम सम्मिलित आईडी कैसे प्राप्त करें?

  2. हाइबरनेट नामकरण रणनीति तालिका के नाम बदल रही है

  3. जावा का उपयोग करके जेनरेट की गई पीडीएफ फाइलों को MySQL डेटाबेस में कैसे सेव करें?

  4. कक्षा द्वारा mysql अद्यतन तालिका अजाक्स

  5. एंड्रॉइड एप्लिकेशन में क्लाइंट <-> सर्वर <-> डेटाबेस आर्किटेक्चर को लागू करने का सबसे अच्छा तरीका?