OR
từ khóa khiến trình tối ưu hóa của MySQL phát điên.
Bạn có thể thử một cái gì đó như thế này.
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%'
Hoặc bạn có thể xem xét tìm kiếm FULLTEXT. Nó yêu cầu MyISAM hoặc phiên bản MySQL 5.6 trở lên.
CHỈNH SỬA * Thật khó để biết chính xác điều gì đang xảy ra với những thứ tối ưu hóa này. Bạn có thể thử cái này không? Điều này sẽ xem liệu lựa chọn ngôn ngữ có làm bạn khó chịu hay không.
SELECT name
FROM table
WHERE (name LIKE 'myname%' OR enam LIKE 'myname%')
Bạn có thể thử cái này không?
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%'
Nó sẽ không cho kết quả hoàn hảo - nó sẽ có các mục tên trùng lặp - nhưng nó sẽ bỏ qua DISTINCT
bước khử trùng lặp trong truy vấn của bạn.
Bạn cũng có thể thử điều này.
SELECT name
FROM table
WHERE lang_index='en'
AND id IN (
SELECT id from table
WHERE (name LIKE 'myname%' OR enam LIKE 'myname%'))