sql >> Database teknologi >  >> RDS >> Mysql

Langsom søgning efter indeksforespørgsel LIKE% MYSQL

OR søgeord gør MySQL's optimizer til vanvid.

Du kan prøve noget som dette.

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%'

Eller du kan overveje at søge i FULLTEXT. Det kræver MyISAM eller en version af MySQL 5.6 eller nyere.

REDIGER *Det er svært at vide præcis, hvad der sker med disse optimeringsting. Kan du prøve dette? Dette vil se, om sprogvalget besmitter dig.

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

Kan du prøve dette?

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%'

Det vil ikke give et perfekt resultat -- det vil have duplikerede navneelementer -- men det vil springe en DISTINCT over deduplikeringstrin i din forespørgsel.

Du kan også prøve dette.

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



  1. Hvad er SQL Server Management Studio (SSMS)?

  2. Række til kolonne transformation i MySQL

  3. Fejlfindingstabel ikke fundet Fejl

  4. Laravel-5 'LIKE' ækvivalent (veltalende)