Подтвердить что ты не робот

Mysql like% query медленный с полнотекстовым индексом

Я использую простой запрос mysql LIKE, например:
SELECT * FROM myTable WHERE field LIKE 'aaa%' ORDER BY field2

У меня есть полнотекстовый индекс в поле, и все же он очень медленный. Я понял, что есть возможность использовать матч. В чем разница? Как? Каков наилучший подход для моего использования? Заметьте, что я использую "%" для всего, что начинается с "aaa"

UPDATE: Я в итоге использовал что-то вроде этого: SELECT
*, MATCH (name) AGAINST ('a*' IN BOOLEAN MODE) AS SCORE
FROM
users WHERE
MATCH (name) AGAINST ('a*' IN BOOLEAN MODE)
ORDER BY SCORE, popularity DESC LIMIT 4

Одна вещь, которую я хотел бы изменить, заключается не в том, что вы сначала заказываете SCORE, а затем по моей популярности в полете, а вместо этого заказываете простой весовой функцией, что-то вроде 0,5 * SCORE + 0.5 *. Как?

4b9b3361

Ответ 1

LIKE не использует полнотекстовый индекс. Чтобы использовать полнотекстовый индекс, вы должны использовать совпадение (как вы сказали):

SELECT * 
FROM myTable 
WHERE MATCH(field) AGAINST ('aaa*' IN BOOLEAN MODE)
ORDER BY field2

Руководство MySQL содержит обширную главу Функции полнотекстового поиска.