Я собираю некоторые данные (чирикать с хэштегом) и работать, чтобы создать статистику со следующей структурой таблицы:MySQL Оптимизация подзапросов & Order совокупным
Моя статистика целью является показать, как много детей и сколько впечатление на твит
Запрос:
SELECT parent.tweet_id, parent.tweet_text, parent.tweet_time, parent.tweet_image, parent.user_id, parent.user_name, parent.user_follower, parent.user_following, parent.is_retweet, parent.is_favorite, parent.is_reply,
(
SELECT COUNT(tweet_id)
FROM tweet
WHERE tweet_status = 1 && user_follower > 0 && is_retweet = parent.tweet_id
) as child,
(
SELECT (COALESCE(SUM(user_follower),0) + parent.user_follower)
FROM tweet WHERE tweet_status = 1 && user_follower > 0 && is_retweet = parent.tweet_id
) as impression
FROM tweet AS parent
WHERE parent.tweet_status = 1 AND parent.is_retweet = 0 AND parent.is_favorite = 0 AND parent.is_reply = 0
ORDER BY parent.tweet_time DESC
child
: подсчитывать общее твиттере, is_retweet = скобка t.tweet_id
impression
: parent.user_follower + сумма user_follewer где is_retweet = parent.tweet_id
Мой запрос слишком медленно при получении child
и impression
и я не знаю, как оптимизировать :(. Но, реальная проблема в том, когда я хочу найти 10 лучших ударных баз на показе, ORDER BY impression
выглядят глупо.
Я ожидаю, что все это поможет упростить этот запрос :)
Pls предоставляет список существующих индексов для всех затронутых таблиц, а также предоставляет результат объяснения вашего запроса. – Shadow
Я бы начал с перемещения подзапросов из списка выбора в предложение from как производные таблицы. – Shadow