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%'
または、フルテキスト検索を検討することもできます。 MyISAMまたはMySQL5.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%'))