单表超过2G,查询结果约800W条的效率有关问题

单表超过2G,查询结果约800W条的效率问题

mysql server是5

问题很简单,语句如下

SELECT count(*) as count FROM `data_changed` WHERE `datetime`>=’2012-02-25 21:34:02′ AND `datetime`<=’2012-02-25 23:36:02′;

mysql console下运行得到5.4W条数据,耗时0.25秒

假如我把后边的一个时间改成’2012-03-25 23:36:02 (扩大了搜索范围)

mysql console下运行得到799W条数据,耗时22.67秒

其中datetime字段已经添加了索引。

但为什么查询一个月的数据那么慢呢?当然我肯定字段datetime的索引效果的,毕竟这个表的文件大小和表索引的文件分别为3.3G和1.9G了,没索引肯定第一条语句也非常慢才对。

在实际应用的查询中,还有其他子查询条件(也索引过)。加上其他条件实在忍受不了啦。

这个问题通过google好几天了,还是找不到结果,网上多数说是没建索引之类的问题而已,这些信息对于我没有帮助。

所以我看会不会是mysql的极限了?要真是极限能推荐一下使用什么数据库吗?




你这个搜索已经覆盖了表中绝大部分数据

不走索引了。。。。应该说,走索引也不能有性能提升

你explain一下看看




贴出你的

explain SELECT count(*) as count FROM `data_changed` WHERE `datetime`>=’2012-02-25 21:34:02′ AND `datetime`<=’2012-02-25 23:36:02′;

show index from `data_changed`

以供分析。




挺正常的 就是光扫描datetime的索引 也需要读很大的索引存储空间




考虑下分区吧




考虑分区表吧

单表超过2G,查询结果约800W条的效率有关问题

相关文章:

你感兴趣的文章:

标签云: