Оптимизация одного из ключевых запросов к БД

Добрый день!
Сегодня получили письмо от службы поддержки со следующим содержанием
Доброго времени суток!

Вот этот запрос перегружает базу.

SELECT SQL_CALC_FOUND_ROWS DISTINCT t.topic_id, 
CASE WHEN (LOWER(t.topic_title) REGEXP '[[:<:]]plazan[[:>:]]') THEN 1 ELSE 0 END +
CASE WHEN (LOWER(tc.topic_text_source) REGEXP '[[:<:]]plazan[[:>:]]') THEN 1 ELSE 0 END AS weight
FROM prefix_topic AS t
LEFT JOIN prefix_topic_content AS tc ON tc.topic_id=t.topic_id
WHERE (topic_publish=1) AND
((LOWER(t.topic_title) REGEXP '[[:<:]]plazan[[:>:]]')
OR (LOWER(t.topic_title) REGEXP '[[:<:]]plazan[[:>:]]') 
OR
(LOWER(tc.topic_text_source) REGEXP '[[:<:]]plazan[[:>:]]')
OR (LOWER(tc.topic_text_source) REGEXP '[[:<:]]plazan[[:>:]]') 
)
ORDER BY
weight DESC,
t.topic_id ASC
LIMIT 0, 20

Сделаете с ним, пожалуйста, что-нибудь.--

Как я понимаю это один из ключевых запросов, поскольку он выполняется к таблицам prefix_topic prefix_topic_content и если я не ошибаюсь, то его основная задача — поиск топиков.
Подскажите что можно здесь сделать? Кто сталкивался с похожей проблемой?

У нас заблокировали пользователя БД из-за этого!!!

14 комментариев

avatar
это запрос поиска плагина ейсмайсерч от авадима.

Подскажите что можно здесь сделать? Кто сталкивался с похожей проблемой?
выключить поиск вообще или поставить сфинкс.
этот плагин вам тоже не особо поможет, т.к. нагрузка в них почти одинаковая.

или ищите новый хостинг
avatar
Похожая проблема, но с другим sql-запросом. Нет, с хостингом проблемы нет :)

Столкнулся с проблемой медленной загрузки постов. Полез в дебаггер и действительно, один sql-запрос очень долго выполняется. В sql я не силен, поэтому предполагаю, что этот запрос необходим для отслежки последней активности(верно?) Можно ли его оптимизировать? Время выполнения прыгает от 400мс до 8с, что очень много. Или же проблема в настройках mysql? В общем, в какую сторону копать? :)
dl.dropbox.com/u/60364146/CloudShot/shot_29032012_141556.png
avatar
У Вас самый простой запрос это однозначно проблема хостинга. Вам либо режут ресурсы, либо запрос происходит в момент уже сильной загрузки мускула другими пользователями. Как вариант можно попробовать добавить индекс для topic_id и user_id. И вообще 143 запроса для вывода одной страницы — это очень много :)
avatar
Хостинг — vps от interserver(реселлер hetzner), гиг оперативки, нагрузки пока вообще никакой(один я прыгаю и тестирую). Так что думаю дело не в хостинге. Скорость то всегда разная: dl.dropbox.com/u/60364146/CloudShot/shot_29032012_160812.png

На счет запросов — сейчас 4 плагина включены, так что уменьшить их кол-во я не могу :) Позже посмотрю настройки mysql, они вроде как дефолтные…
avatar
В хостинге ли дело можно легко проверить. Достаточно заказать в любом месте бесплатный тестовый период на 10 дней и посмотреть как там будет выполняться. Update более трудоемкая операция чем Select однозначно, но одно то что время запроса колеблется более чем в 20 раз заставляет задуматься что это не запрос. Можно еще попробовать проверить целостность таблиц и попробовать ее пересоздать. Индекс пробовали добавлять?
avatar
Ну не сказал бы, что легко. Надо ведь все развернуть и настроить :)
На счет индекса — нет, пока не знаю как это реализивать.
avatar
interserver — говно. лучше переплатить чем там сидеть. сам на нем( цены заманили. жду когда год кончиться и съеду.
avatar
Цены + нормальные отзывы тоже заманили. Попробую тогда развернуться на облачном хостинге(clodo/scalaxy).
avatar
А чем именно плох хостинг? Размещаю свои сайты на vds64.com, но думаю перейти на interserver.ru. Считаете что не стоит?
avatar
Полазий по моему сайту: neet.ws/
Посмотри как он «быстро» работает.
У меня тариф: Optimal — CPU Intel Xeon — 1000 Mhz, Оперативка: 1024 Mb
Как итог: тариф не оправдывает свои показатели.
Вообще решайте сами конечно, но если есть деньги то идите на www.truevds.ru/
avatar
Я перешел на клодо и теперь доволен. Все летает, пока нагрузки особой нету и выходит по 5р в день, что даже в 2 раза дешевле интерсервер.
avatar
зачем ждать? сезжайте на норм хост если не устраивает и забирайте манибек если есть, если нет то продайте остаток кому нить.
avatar
посмотрите pravda-news.ru — поиск от Яндекс, не идеально, но ресурсы яро экономит + релевантность, не особо, клнечно, но лучше(е) чем у айса.
avatar
вы сравнивали?
Автор топика запретил добавлять комментарии