我用的 MySQL 数据库。
到现在 A 表已经接近 900w 条了。都是原始数据,没有索引之类的。。。
每次 select 都很蛋疼。。。。
sql
语句:
select date_format(captureTime,'%Y-%m-%d') as 'stamp', count(captureTime) as '_counts' from A where captureTime>=(CurDate()-7) group by date_format(captureTime,'%Y-%m-%d') ORDER BY captureTime ASC;
比如上面这样的语句,都要 20 分钟。我不懂优化。
就是为了每个小时都执行一次这样的语句,把_counts
缓存起来。
900w 数据一点都不多,加个索引吧。 常规方法(比如索引)能解决的问题,就不要用一些偏门方案,因为偏门方案有其他问题,你到时候又要开一个帖子来解决新方案的问题。
如果还想更快的话,一般还要建立一个按日的统计表,然后每天凌晨跑一次数据,查询直接查统计表,引入的新问题是当天统计数据在统计表没有体现,如果需要要额外想办法。
900W 真心不多,我们有张表 2 亿多数据,存储用户行为。有很多索引都是后期建的,查询的时候也要按 ID 砍,查初始日期的 id 最小值,和结束日期的 id 最大值。