![]() |
|
Задавайте вопросы, мы ответим
Вы не зашли.
Говорят на хостинге, что мой сайт производит слишком большую нагрузку на сервер, и виноватым является MySQL запрос
Отредактированно Анушка (12.08.2011 14:09:04)
Неактивен

Покажите структуру таблиц и план выполнения запроса, т.е.
show create table feor_posts;
show create table feor_postmeta;
и
explain ваш запрос;
Неактивен
Как это сделать? Объясните чайнику
Неактивен

Выполнить в используемом вами клиенте (например, phpadmin и т.д.) для работы с базой три приведенных выше запроса и запостить здесь результат.
Неактивен
Вот что мне удалось
1. show create table feor_posts;
Неактивен

Вместо переменных подставьте реальные значения.
Неактивен
vasya написал:
Вместо переменных подставьте реальные значения.
Мне надо на пальцах объяснять. Почти "ноль" в MySql
Непонятно, что делать, и что куда подставлять?
Неактивен

При работе сайта вместо N и S подставляются некие значения, вот и выполните реально существующий запрос.
Неактивен
ИМХО
Неактивен
Всё это, конечно интересно, но, по большей мере, для меня это тёмный лес.
Не смогу воспользоваться советами. Не представляю себе как?
Что делать? ![]()
Неактивен

Tsvetkov написал:
ИМХО
SELECT DISTINCT feor_posts.*, (meta_value+N) AS views FROM feor_posts
LEFT JOIN feor_postmeta ON feor_postmeta.post_id = feor_posts.ID WHERE
post_date < 'S' AND post_type = 'S' AND post_status = 'S' AND meta_key =
'S' AND post_password = 'S' ORDER BY views DESC LIMIT N;
следует поменять наSELECT DISTINCT feor_posts.*, (meta_value+N) AS views FROM feor_posts
LEFT JOIN feor_postmeta ON post_date < 'S' AND post_type = 'S' AND post_status = 'S' AND
meta_key = 'S' AND post_password = 'S' AND feor_postmeta.post_id = feor_posts.ID
ORDER BY views DESC LIMIT N;
Т.к. первый запрос делает -
1 .соединяет таблички
2. выбирает нужные строки из бАльшой таблици
второй запрос
1. выбирает нужные строки
2. те строки что остались соединяет
это меньше ест ресурсов
Попробую оспорить - вы ошибаетесь.
Отличие второго запроса в меньшей читабельности - неясно где условие связи.
Tsvetkov написал:
Еще советы -
1. на столбцы post_date, post_type,post_status ,meta_key ,post_password - создать составной индекс
(имеет смысл если insert , update в таблицу не очень интенсивная)
meta_key в другой таблице ![]()
post_date используется в операции сравнения, т.е. на нем в данном примере закончится использование индекса.
Неактивен

Анушка написал:
Всё это, конечно интересно, но, по большей мере, для меня это тёмный лес.
Не смогу воспользоваться советами. Не представляю себе как?
Что делать?
Вы можете найти в коде этот запрос и поменять его? (Менять пока ничего не надо, это только вопрос)
Неактивен
Честно говорю,- перечитываю то, что написано в ваших сообщениях,- и ничего не понимаю, что на что надо поменять, где и как? В каком коде и что конкретно искать?
Неактивен

Искать в скриптах вордпресса этот запрос и возможно править после того как разберемся в нем. Сейчас от меня ускользает смысл - поле `meta_value` определено как longtext, но по логике запроса используется как числовое.
Думаю, вам стоит параллельно обратиться на форумы поддержки вордпресса, возможно достаточно отключить всего лишь какую-нибудь опцию в настройках вордпресса.
Неактивен
Наверное, то, что вы говорите для вас понятно, для меня совсем непонятно. Копаться в таблицах SQLи искать неведомо что, я вряд ли смогу. Надо хоть примерно понимать, что делаешь.
На форумы Вордпресса попробую обратиться, ищу куда.
Неактивен
Анушка написал:
Наверное, то, что вы говорите для вас понятно, для меня совсем непонятно. Копаться в таблицах SQLи искать неведомо что, я вряд ли смогу. Надо хоть примерно понимать, что делаешь.
На форумы Вордпресса попробую обратиться, ищу куда.
Совершенно верно, вы обратились не по адресу, тут вам разве что помогут переписать wordpress. :-)
Смотрите на форумах WordPressa, иногда люди выкладывают уже готовые "патчи", решающую конкретную проблему.
Если ничего не найдёте, то тогда воспользуйтесь услугами web программиста.
Неактивен
Всё равно спасибо вам за помощь, а ещё больше за отзывчивость.
Неактивен

Если не получиться справиться самостоятельно, то можно заказать у нас услугу оптимизации производительности MySQL.
http://sqlinfo.ru/services/
Неактивен