改进或消除 mysql COUNT 的方法

Way to improve or eliminate a mysql COUNT

请原谅我对这个问题的无知,因为我在这方面的经验不多。我有一个页面使用 mysql COUNT(*) 查询 return 用户的统计信息。例如,类似于:

SELECT COUNT(*) FROM worker WHERE worker_id = '1234';

它使用 worker_id 的索引并检查 EXPLAIN 似乎查询看起来不错。然而,这执行起来绝对残酷,并且在具有一百万行以上的 table 上进行单个查询可能需要 5 秒以上的时间。此外,这是一个非常常见的查询,有时它会导致 mysql 超时错误,多个查询试图 运行 this.

'solve'这个问题有什么好方法?信息变化非常快,所以我认为缓存它不会起作用。我将如何解决这个问题,一些大型网站如何显示统计信息(例如,Facebook 好友或 Twitter 关注者)?

首先,请确保您在 worker(worker_id) 上有一个索引。

其次,如果列确实是数字而不是字符串,则不要使用单引号:

SELECT COUNT(*)
FROM worker
WHERE worker_id = 1234;

第三,如果你只需要知道工人是否存在(实际上不需要计数),那么运行这样的查询:

select 1
from worker
where worker_id = 1234
limit 1;

并检查是否返回了任何行。