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

अनुक्रमणिका क्वेरी द्वारा धीमी खोज LIKE% MYSQL

OR कीवर्ड MySQL के अनुकूलक को पागल बनाता है।

आप कुछ इस तरह की कोशिश कर सकते हैं।

SELECT name FROM table WHERE lang_index='en' AND name LIKE 'myname%'
UNION
SELECT name FROM table WHERE lang_index='en' AND enam LIKE 'myname%'

या आप FULLTEXT खोज पर विचार कर सकते हैं। इसके लिए MyISAM या MySQL 5.6 या बाद के संस्करण की आवश्यकता है।

संपादित करें *यह जानना मुश्किल है कि इन अनुकूलन चीजों के साथ क्या हो रहा है। क्या आप यह कोशिश कर सकते हैं? यह देखेगा कि भाषा चयन आपको परेशान कर रहा है या नहीं।

 SELECT name 
   FROM table 
  WHERE (name LIKE 'myname%' OR enam LIKE 'myname%')

क्या आप इसे आजमा सकते हैं?

SELECT name FROM table WHERE lang_index='en' AND name LIKE 'myname%'
UNION ALL
SELECT name FROM table WHERE lang_index='en' AND enam LIKE 'myname%'

यह सही परिणाम नहीं देगा -- इसमें डुप्लिकेट नाम आइटम होंगे -- लेकिन यह एक DISTINCT को छोड़ देगा आपकी क्वेरी में डुप्लिकेटिंग चरण।

आप इसे भी आजमा सकते हैं।

SELECT name 
  FROM table
 WHERE lang_index='en'
   AND id IN (
    SELECT id from table 
     WHERE (name LIKE 'myname%' OR enam LIKE 'myname%'))



  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. बेस 64 एन्कोडेड डेटा को बीएलओबी या टेक्स्ट डेटाटाइप के रूप में संग्रहीत करना

  3. वैकल्पिक WHERE पैरामीटर के साथ संग्रहित प्रक्रिया

  4. मैसकल में इंक्रीमेंटल बैकअप कैसे करें

  5. MySQL के साथ PHP के माध्यम से एक INSERT में दिनांक और समय टिकट कैसे जोड़ें?