以下查询耗时5.5秒。由于这是一个简单的主键计数,并且这两个表都有< 5000条记录,所以我对它的速度非常惊讶。是否有任何解决方法来提高性能?mySQL使用子查询慢速计算主键
SELECT COUNT(*)
FROM users
WHERE (SELECT COUNT(*)
FROM clients
WHERE userID=users.id)=0
我正在计算没有客户端的用户数量。
以下查询耗时5.5秒。由于这是一个简单的主键计数,并且这两个表都有< 5000条记录,所以我对它的速度非常惊讶。是否有任何解决方法来提高性能?mySQL使用子查询慢速计算主键
SELECT COUNT(*)
FROM users
WHERE (SELECT COUNT(*)
FROM clients
WHERE userID=users.id)=0
我正在计算没有客户端的用户数量。
试试这个:
SELECT COUNT(*) FROM users u
left join clients c
on u.id = c.userID
where u.id not in (select userID from clients)
尝试此查询
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
上创建索引列
希望这有助于
上添加clients.userID索引后,该查询时间归结为0.036s – cronoklee 2013-04-23 11:21:33