原谅我对这个问题的无知,因为我在这方面没有多少经验。我有一个页面使用mysql COUNT(*)
查询来返回用户的统计信息。例如,像:
SELECT COUNT(*) FROM worker WHERE worker_id = '1234';
它使用worker_id
的索引,并查看EXPLAIN
似乎查询看起来不错。但是,这绝对是残酷的,并且在具有一百万+行的表上进行单个查询可能需要5秒以上。此外,这是一个非常常见的查询,有时它会导致mysql超时错误,多个查询尝试运行此命令。
什么是解决问题的好方法。这个问题?信息变化非常快,所以我不认为缓存会起作用。我将如何解决此问题,以及一些大型网站如何处理节目统计数据(例如,Facebook好友或Twitter粉丝)?
答案 0 :(得分:2)
首先,请确保您在worker(worker_id)
上有索引。
其次,如果列实际上是数字而不是字符串,那么请不要使用单引号:
SELECT COUNT(*)
FROM worker
WHERE worker_id = 1234;
第三,如果你只需要知道工人是否存在(并且实际上不需要计数),那么运行这样的查询:
select 1
from worker
where worker_id = 1234
limit 1;
并检查是否返回任何行。