Le OR
mot-clé rend fou l'optimiseur de MySQL.
Vous pourriez essayer quelque chose comme ça.
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%'
Ou vous pourriez envisager une recherche FULLTEXT. Il nécessite MyISAM ou une version de MySQL 5.6 ou ultérieure.
MODIFIER * Il est difficile de savoir exactement ce qui se passe avec ces choses d'optimisation. Pouvez-vous essayer ceci? Cela permettra de voir si la sélection de la langue vous dérange.
SELECT name
FROM table
WHERE (name LIKE 'myname%' OR enam LIKE 'myname%')
Pouvez-vous essayer ?
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%'
Il ne donnera pas un résultat parfait - il aura des éléments de nom en double - mais il sautera un DISTINCT
étape de déduplication dans votre requête.
Vous pouvez également essayer ceci.
SELECT name
FROM table
WHERE lang_index='en'
AND id IN (
SELECT id from table
WHERE (name LIKE 'myname%' OR enam LIKE 'myname%'))