Акция!  Домен 34 грн, домен 55 грн, домен  - 200 грн домен  - 65 грн, домен  - 99 грн, домен  - 56 грн!, домен  - 425 грн!
Мы используем cookie-файлы
Для оптимизации работы нашего сайта мы используем cookie-файлы. Продолжая использовать сайт, Вы соглашаетесь с использованием cookie-файлов.
  • RUB
  • USD
  • EUR
  • UAH
Чат техподдержки
Вы являетесь клиентом?
  • +38(044) 392-74-33  Киев
  • +38(057) 728-39-00  Харьков
  • +38(056) 794-38-31  Днепр
  • +38(032) 229-58-93  Львов
  • +38(048) 738-57-70  Одесса
  • +38(093) 170-15-42  Life
  • +38(067) 400-88-44  Киевстар
  • +38(095) 630-90-82  MTC
  • +1(888)393-24-51  USA, Toll free
  • +44(131)507-01-14  Great Britain
  • +7(499) 348-28-61  Москва

MySQL. Медленные запросы БД.

Форумы MySQL Медленные запросы БД.
galerys
4 года
хостинг: есть
домен: есть
Медленные запросы БД.
Добрый день.
Импортировал ночью много статей на сайт, нажал "пересчитать публикации" и сайт конкретно начал подвисать.
Новостей 1900 шт.
Зашел в панель управления MySQL, а там 1000 медленных запросов, выполняются по 30 секунд.
Техническая поддержка сказала, что нужно оптимизировать БД, но в базах я не силён :((
Насколько я понимаю, это рейтинг статей грузит сайт. Ошибочно добавилось сотня новых категорий и видимо БД их все сканирует.
Сайт на dle.

SELECT *, ((vote_num/(vote_num+0))*(rating/vote_num))+((0/(vote_num+0))*1.8508) AS top FROM dle_post, dle_post_extras WHERE id = news_id AND category= 0 OR category=3 OR category=28 OR category=26 OR category=4 OR category=5 OR category=7 OR category=9 OR category=6 OR category=8 OR category=10 OR category=11 OR category=12 OR category=13 OR category=14 OR category=15 OR category=30 OR category=16 OR category=17 OR category=18 OR category=25 OR category=29 OR category=2 OR category=19 OR category=27 OR category=20 OR category=21 OR category=22 OR category=23 OR category=1 OR category=31 OR category=24 OR category=32 ORDER BY top DESC LIMIT 0, 10


Подскажите пожалуйста, что нужно сделать, чтобы сайт снова работал?
Спасибо.
Прикрепленные файлы:
Илья
4 года
хостинг: есть
домен: есть
Да, так и есть MySQL обрабатывает условие OR очень туго. Тут конечно программисты постарались, так как правильно было бы написать запрос с условием category IN (0,3,28...) кроме этого видно, что в запросе есть ошибка - не определено скобками выполнение условия AND с условием OR.

Правильный запрос:
SELECT *, ((vote_num/(vote_num+0))*(rating/vote_num))+((0/(vote_num+0))*1.8508) AS top
FROM dle_post
INNER JOIN dle_post_extras ON id = news_id
WHERE category IN (0,28,26,4,....)
ORDER BY top DESC
LIMIT 0, 10
Илья
4 года
хостинг: есть
домен: есть
Есть конечно вероятность того, что запросы долго выполнялись из-за внесения изменений в таблицу.
galerys
4 года
хостинг: есть
домен: есть
Так что с этой бедой делать?
Может выполнить какой-то запрос?
Что-то удалить?
Или идёт обработка предыдущего запроса?
galerys
4 года
хостинг: есть
домен: есть
Всё, разобрался.
Оказывается когда-то ставил корявый ТОП новостей, но работал он криво, убрал отображение, а сам скрипт остался, вот и вылезло боком.
Спасибо за помощь, начал больше понимать в БД =))
Alik
4 года
хостинг: нет
домен: есть
правильно было бы написать запрос с условием category IN (0,3,28...) © Илья

Вот это хорошая штука, спасибо. Оптимизировал себе несколько запросов с большим количеством условий «OR».
Участвовать в общении на этом форуме могут только
зарегистрированные пользователи.

Если вы уже зарегистрированы Вам необходимо войти на форум.

Тема закрыта по истечению срока давности.