以下查询耗时 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/