简体   繁体   English

MySQL帮助:SQL查询的良好实践

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

So currently I have a query with 2 sub-queries but with the same table as source. 因此,目前我有一个带有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)

It executes at exactly more than 4 milliseconds for me which is a bad practice for SQL Queries. 对我来说,它执行的时间恰好超过4毫秒,这对SQL查询来说是一个不好的做法。 Can someone help me with a more practical SQL Query for this one? 有人可以帮我做一个更实用的SQL查询吗?

What it basically does is get the count of Activated and Deactivated accounts connected to each individual user account in the users table and save it on UserFollow and UserFollower column on users table. 它的基本作用是获取与用户表中每个用户帐户相关的已激活和已停用帐户的计数,并将其保存在用户表的UserFollow和UserFollower列中。

I would try: 我会尝试:

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