您的位置首页SQL

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

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

在查询一个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,不然太影响速度了。

本文来自网络,不代表芝麻站长立场,转载请注明出处:http://www.wuhu815.com/sql/2019710213045.html
联系我们

联系我们

173-5429-9937

在线咨询: QQ交谈

邮箱: web018@163.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

关注微博
返回顶部