如何优化大表的计数查询

时间:2013-07-26 11:28:54

标签: php mysql

我的表包含3亿条记录,其中包含两个字段“name”和“date”。现在 我需要计算上个月的记录,所以我做了

select count(*) from lenders_transaction WHERE dates >= now()-interval 1 month;

但这需要很长时间,所以我需要建议如何优化计数查询以及如何获得快速结果。

1 个答案:

答案 0 :(得分:4)

@Valex有正确的解决方案,它是date字段的索引。

我想评论一个包含3亿行并且不断增长的表是一张大表。此查询表明最近的数据比旧数据更重要。如果是这样,你应该学习分区。

分区是一种将大型表拆分为较小存储单元的方法。如果查询只需要访问其中一个,那么只读取该数据进行处理 - 这是一个很大的节省。例如,如果您的数据按月分区并且您有36个月的数据,那么您的查询只需要访问2个月。与读取所有数据相比,这将节省近95%。

Here是关于分区的MySQL文档。