У меня есть таблица с 400 000 строк. Я использую полнотекстовый поиск на моем сайте. Если в таблице 250 000 строк или меньше, поиск занимает несколько секунд, однако при увеличении до 400 000 поиск продукта занимает 35 секунд.
Вот пример запроса, который я использую для поиска:
SELECT *,
(CASE WHEN CHAR_LENGTH(index.brand_name) > 18
THEN CONCAT(SUBSTRING(index.brand_name, 1, 18), '...')
ELSE index.brand_name
END) AS brand_name
from `index`
where MATCH (`product_name`) AGAINST (:search IN BOOLEAN MODE) and `category_id` = '1' order by MATCH (`product_name`) AGAINST (:search2 IN BOOLEAN MODE) desc
Я использовал объяснение объяснение, которое показало:
id,select_type,table,type,possible_keys,key,key_len,ref,rows,Extra
1,SIMPLE,index,ALL,NULL,NULL,NULL,NULL,385624,"Using where; Using filesort"
Затем я добавил полнотекстовый индекс для поля product_name и снова выполнил объяснение:
id,select_type,table,type,possible_keys,key,key_len,ref,rows,Extra
1,SIMPLE,index,fulltext,ft_product_name,ft_product_name,0,NULL,1,"Using where; Using filesort"
Однако это не улучшило скорость, кто-нибудь может помочь?
Задача ещё не решена.
Других решений пока нет …