0

以下查询需要 5.5 秒。由于这是一个简单的主键计数,并且两个表都有 <5000 条记录,我很惊讶它有多慢。有什么办法可以提高性能吗?

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

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

4

2 回答 2

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

希望这可以帮助

于 2013-04-23T11:00:29.323 回答
2

试试这个:

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

在这里演示

于 2013-04-23T10:57:39.987 回答