Вопрос о выпуске базы данных/скорости на веб-сайте PHP/MySql. Запрос с полнотекстовым поиском кажется очень медленным.Полнотекстовый индекс и скорость поиска
Я не эксперт по SQL, просто простое базовое программирование php/html для базовых сайтов и некоторых базовых знаний MySQL. У клиента есть проблемы с скоростью для опции поиска на сайте, разработанной внешним программистом, которая больше не доступна. Мы нашли следующую информацию:
База данных MySQL со столом с примерно 225000 строками (myISAM).
столбец (DATA) с полным текстом, содержащий данные, которые необходимо искать.
Эта колонка содержит в среднем 200 слов на строку.
В PHPMyAdmin (у нас есть только PHPMYADMIN-доступ и не FTP не прямой доступа сервера), мы видим, что мощность полнотекстового индекса 1.
Существует один конкретный запрос, который, как представляется, очень медленно, когда в PHPMyAdmin мы выполнить EXPLAIN для этого запроса он возвращает:
id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE T_SEARCHDATA fulltext DATA DATA 0 1 Using where; Using filesort 1 SIMPLE TU_CUS const PRIMARY PRIMARY 4 const 1 Using index 1 SIMPLE M_CATEGORY eq_ref PRIMARY PRIMARY 4 buitenbeeld.T_SEARCHDATA.PC_ID 1 Using index
При выполнении запроса он принимает бросить курить некоторое время до того, как запрос будет выполнен, используется следующий запрос:
SELECT T_SEARCHDATA.MID,T_SEARCHDATA.MT_IMG,T_SEARCHDATA.MP_IMG,T_SEARCHDATA.M_ACTIVE,T_SEARCHDATA.TITLE
FROM T_SEARCHDATA LEFT JOIN TU_CUS ON TU_CUS.UB_ID = 0 LEFT
JOIN M_CATEGORY ON M_CATEGORY.PC_ID = T_SEARCHDATA.PC_ID
WHERE MATCH (T_SEARCHDATA.DATA) AGAINST ('+searchword1* +searchword2* +searchword3*' IN BOOLEAN MODE) AND M_ACTIVE = 1 ORDER BY T_SEARCHDATA.UPDATE DESC
LIMIT 0,30
Наша задача
Запрос выше принимает от 5 до даже 30 секунд, чтобы выполнить в зависимости от точного поиска слов. После первого раза мы выполняем запрос во второй раз, когда он очень быстрый, похоже, что какое-то кэширование активировано ???
Некоторые из моих более конкретных вопросов:
Это хорошо, что мощность для индекса полнотекстового является 1? Найдены ответы на эту тему, но нет однозначного ответа на вопрос, почему этот будет в порядке для полного индекса.
Что касается скорости, не странно ли, что база данных из 225000 строк (вероятно, до 300 000 в ближайшие недели) требует много времени для выполнения этого запроса? Что-то не так с запросом, может ли оно быть оптимизировано?
Является ли полнотекстовый поиск наилучшим вариантом в этом случае?
Я имел эту проблему, но я использовал ДУМАТЬ СФИНКС очень полезно –
Ну я не рекомендую использовать полнотекстовый поиск как плагин попробуйте использовать другой путь к search –
Спасибо за ответ, я никогда не слышал о Сфинксе, но, прочитав еще немного об этом, я обязательно попробую. – user3272710