簡體   English   中英

MySQL查詢優化-子查詢+多個聯接

[英]MySQL Query Optimization - Sub Queries + Multiple Joins

如何優化此查詢? 獲得10行需要2-3秒。

SELECT users.user_id, users.user_name, users.user_display_name,
(SELECT COUNT(tweet_id) FROM tweets WHERE tweet_user_id = users.user_id AND tweet_status = 1) AS  user_tweets_count,
(SELECT COUNT(tweet_reply_id) FROM tweets_reply tr JOIN tweets t ON t.tweet_id = tr.tweet_reply_tweet_id WHERE tweet_reply_user_id = users.user_id AND t.tweet_status = 1 AND tr.tweet_reply_status = 1) AS user_replies_count
FROM users
JOIN tweets ON tweets.tweet_user_id = users.user_id
JOIN tweets_reply ON tweets_reply.tweet_reply_user_id = users.user_id
WHERE (tweets_reply.tweet_reply_status = 1 AND tweets.tweet_status = 1)
GROUP BY users.user_id
ORDER BY (user_tweets_count + user_replies_count) DESC
LIMIT 10
   SELECT users.user_id, users.user_name, users.user_display_name, 
   COUNT(tweets.tweet_id) AS user_tweets_count, 
   COUNT(tweets_reply.tweet_reply_id) AS user_replies_count
   FROM users
   JOIN tweets ON tweets.tweet_user_id = users.user_id
   JOIN tweets_reply ON tweets_reply.tweet_reply_user_id = users.user_id
   WHERE (tweets_reply.tweet_reply_status = 1 AND tweets.tweet_status = 1)
   GROUP BY users.user_id
   ORDER BY (user_tweets_count + user_replies_count) DESC
   LIMIT 10

希望這可以幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM