Задавайте вопросы, мы ответим
Вы не зашли.
Говорят на хостинге, что мой сайт производит слишком большую нагрузку на сервер, и виноватым является 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/
Неактивен