mySQL使用子查询慢慢计数主键

时间:2013-04-23 10:50:18

标签: mysql sql count

以下查询需要5.5秒。由于这是一个简单的主键计数,并且两个表都有<5000个记录,我对它的速度有多惊讶。是否有提高性能的解决方法?

SELECT COUNT(*) 
FROM users 
WHERE (SELECT COUNT(*) 
       FROM clients 
       WHERE userID=users.id)=0

我在计算没有客户的用户数量。

2 个答案:

答案 0 :(得分:3)

尝试此查询

SELECT 
   COUNT(*) 
FROM 
   users 
WHERE NOT EXISTS 
   (SELECT 
      userID 
   FROM 
      clients 
   WHERE 
      userID=users.id)

或者你可以尝试这个

SELECT 
   count(*) 
FROM 
   users u
LEFT JOIN  
   clients c
ON 
   u.id = c.userId
WHERE 
   c.userId IS null

id

上创建索引

希望这有帮助

答案 1 :(得分:2)

试试这个:

  SELECT COUNT(*) FROM users u 
  left join clients c
  on u.id = c.userID 
  where u.id not in (select userID from clients)

DEMO HERE