mysql count 缓慢_mysql中使用count(*)查询非常慢的原因和解决方法

在查询一个200多万的表中记录数量时,使用select count(*) from 表名时,需要50几秒才能看到结果,时间长的有点让人受不了。

于是先给表增加两个索引index_addtime和index_code,结果创建每个索引都用去一分多的时间,创建完成后,再查询记录数量,还是50多秒,索引没有太大作用。

再去检查了一下表结构,

CREATE TABLE `表名` (

`id` int(255) NOT NULL AUTO_INCREMENT,

`code` varchar(10) DEFAULT NULL,

`Close` decimal(20,2) DEFAULT '0.00',

`addtime` int(11) NOT NULL DEFAULT '0' COMMENT '时间',

PRIMARY KEY (`id`),

KEY `index_addtime` (`addtime`),

KEY `index_code` (`code`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8;

发现ENGINE=InnoDB这个,由于这个是用于事务处理才加这个,我的表没有用到事务处理,所以把这个改成ENGINE=MyISAM,然后再使用select count(*) from 【表名】查询记录数量,居然是0.000s秒得到记录数量,这两个速度相差太多了。原来问题出现在这里。

大家在创建表的时候,如果用不到事务的话,就不要使用InnoDB,不然太影响速度了。


版权声明:本文为weixin_42515372原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。