mySQL 慢速计算主键与子查询

标签 mysql sql count

以下查询耗时 5.5 秒。由于这是一个简单的主键计数,并且两个表都有 <5000 条记录,所以我对它的速度如此之慢感到非常惊讶。是否有任何解决方法来提高性能?

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

我正在统计没有客户的用户数。

最佳答案

试试这个查询

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 列上创建索引

希望对你有帮助

关于mySQL 慢速计算主键与子查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16167452/

相关文章:

Mysql - 如何将日期(月/日/年)与数据库中的另一个日期进行比较?

php - 如何使用标题使用 MATCH() AGAINST() 获取相关问题

mysql - 如何在不使用distinct的情况下避免一对多关联中的重复记录?

文件名中带有空格的 sqlcmd 脚本

regex - 使用正则表达式在 Perl 中计算句子/单词

java - java中的字符计数

Python 求和 itertools.count?

mysql.service 丢失但显示在列表中 - 安装失败

c# - 是否可以使用 XML 查询命令转储 MySQL 数据库?

mysql - 如何连接具有一对多关系的两个表?