+ -
当前位置:首页 → 问答吧 → select count(*) from fdp.reuters_rkd_pm; 9分钟,这是怎么回事!

select count(*) from fdp.reuters_rkd_pm; 9分钟,这是怎么回事!

时间:2011-09-07

来源:互联网



mysql> select count(*) from fdp.reuters_rkd_pm;
+----------+
| count(*) |
+----------+
| 9431256 |
+----------+
1 row in set (8 min 55.33 sec)

mysql版本5.5.10, 数据库服务器内存4G,innodb存储引擎,程序员开发测试库,没有任何并发压力,现在任何时候执行都是需要9分钟左右。
查询总记录数竟然要9分钟,这是神马情况,如何调整优化呢?

附带explain执行计划

mysql> explain select count(xref) from fdp.reuters_rkd_pm;
+----+-------------+----------------+-------+---------------+---------+---------+------+----------+-------------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+----+-------------+----------------+-------+---------------+---------+---------+------+----------+-------------+
| 1 | SIMPLE | reuters_rkd_pm | index | NULL | PRIMARY | 53 | NULL | 12597698 | Using index |
+----+-------------+----------------+-------+---------------+---------+---------+------+----------+-------------+
1 row in set (0.00 sec)
mysql>

走的也是索引啊,非常快就出来结果了。我非常迷茫了......


作者: mchdba   发布时间: 2011-09-07

repair table 试一下。

作者: ACMAIN_CHM   发布时间: 2011-09-07

引用 1 楼 acmain_chm 的回复:
repair table 试一下。


恩,好的。我去试试看,innodb也可以吗?

作者: mchdba   发布时间: 2011-09-07

引用 2 楼 mchdba 的回复:
引用 1 楼 acmain_chm 的回复:
repair table 试一下。


恩,好的。我去试试看,innodb也可以吗?

不行
你的表有其它索引吗?
如果有
select count(*) from tt where 其它索引字段>0 条件可以修改,只有能用到索引

作者: WWWWA   发布时间: 2011-09-07

引用 3 楼 wwwwa 的回复:
引用 2 楼 mchdba 的回复:
引用 1 楼 acmain_chm 的回复:
repair table 试一下。


恩,好的。我去试试看,innodb也可以吗?

不行
你的表有其它索引吗?
如果有
select count(*) from tt where 其它索引字段>0 条件可以修改,只有能用到索引


有索引的,你看后面的explain结果,走的都是主键索引的。

作者: mchdba   发布时间: 2011-09-07

就是不用主键索引,用第2索引 OR 其它索引

作者: wwwwb   发布时间: 2011-09-07