簡體   English   中英

MySQL幫助:SQL查詢的良好實踐

[英]MySQL Help: Good practice for my SQL Query

因此,目前我有一個帶有2個子查詢的查詢,但具有與源相同的表。

UPDATE users 
SET UserFollow=(SELECT COUNT(*) 
                FROM (SELECT * FROM users) as u1 
                WHERE u1.ReferralID=users.UserID 
                  AND u1.Activated=0), 
    UserFollower=(SELECT COUNT(*) 
                  FROM (SELECT * FROM users) as u2 
                  WHERE u2.ReferralID=users.UserID 
                    AND u2.Activated=1)

對我來說,它執行的時間恰好超過4毫秒,這對SQL查詢來說是一個不好的做法。 有人可以幫我做一個更實用的SQL查詢嗎?

它的基本作用是獲取與用戶表中每個用戶帳戶相關的已激活和已停用帳戶的計數,並將其保存在用戶表的UserFollow和UserFollower列中。

我會嘗試:

UPDATE users 
SET (UserFollow, UserFollower)=
(SELECT COUNT(CASE WHEN u1.Activated=0 THEN 1 END),
        COUNT(CASE WHEN u1.Activated=1 THEN 1 END)
 FROM (SELECT * FROM users) as u1 
 WHERE u1.ReferralID=users.UserID);

暫無
暫無

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

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