我假设您的表被很好地索引并且您的查询很好地使用了这些索引?
在这种情况下,您似乎可能会从综合指数中受益最多——在日期和注册上都有一个。每个索引都会有所帮助,但两者的综合索引将有更多帮助。
添加复合索引的语法是:
alter table yourTableName add index yourIndexName(col1, col2);
mysql> select * from table1;
+---------+------+------+-------------+
| autonum | ID | name | metavalue |
+---------+------+------+-------------+
| 1 | 1 | Rose | Drinker |
| 2 | 1 | Rose | Nice Person |
| 3 | 1 | Rose | Runner |
| 4 | 2 | Gary | Player |
| 5 | 2 | Gary | Funny |
| 6 | 2 | Gary | NULL |
| 7 | 2 | Gary | Smelly |
+---------+------+------+-------------+
7 rows in set (0.01 sec)
mysql> alter table table1 add index autoNumID(autonum, ID);
Query OK, 0 rows affected (0.02 sec)
Records: 0 Duplicates: 0 Warnings: 0
您可以研究的另一件事是制作一个更新的汇总表(每小时或每天等)。使用 CRON 或其他东西来运行查询,该查询会将您的数据摘要创建到一个小得多的表格中,您的报告将用于该表格。