日期:2014-05-16  浏览次数:20925 次

一个有100多万条数据的表该如何统计数据总量
例如:

select count(0) from table1 where datatime > '2012-07-09 00:00:00';

随着数据量的变多,花费的时间会变长

有没有什么方法查找100万条数据的总量和查找10万条数据总量所花费的时间差不多

------解决方案--------------------
count难于优化,从硬件方面想想办法
------解决方案--------------------
唯一的方法就是添加索引 datatime
------解决方案--------------------
如果仅是 select count(0) from table1 where datatime > '2012-07-09 00:00:00'; ,在DATETIME上有索引的情况下应该不会太慢。

贴出你的 explain select count(0) from table1 where datatime > '2012-07-09 00:00:00'; 结果以供分析。
------解决方案--------------------
0.5s 以内应该问题不大。
------解决方案--------------------
比较datetime要求的粒度是多细?
如果比较datetime的粒度是天,那可以把每天的记录数(在定期在低峰期跑PHP脚本之类的)预先统计好放到一张表里,在用户查询的时候,直接从这张表里取数据 。