OR
klíčové slovo přivádí optimalizátor MySQL k šílenství.
Můžete zkusit něco takového.
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%'
Nebo můžete zvážit FULLTEXTOVÉ vyhledávání. Vyžaduje MyISAM nebo verzi MySQL 5.6 nebo novější.
UPRAVIT *Je těžké přesně vědět, co se s těmito optimalizačními věcmi děje. Můžete to zkusit? Uvidíte, zda vás výběr jazyka nezatěžuje.
SELECT name
FROM table
WHERE (name LIKE 'myname%' OR enam LIKE 'myname%')
Můžete to zkusit?
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%'
Neposkytne dokonalý výsledek – bude mít duplicitní položky s názvy – ale přeskočí DISTINCT
krok deduplikace ve vašem dotazu.
Můžete také zkusit toto.
SELECT name
FROM table
WHERE lang_index='en'
AND id IN (
SELECT id from table
WHERE (name LIKE 'myname%' OR enam LIKE 'myname%'))