当前位置:asp编程网>技术教程>Database教程>  正文

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

2017-07-12 13:20:16   来源:www.aspbc.com   作者:zuiaiphp   浏览量:1999   收藏
今天在查询一个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,不然太影响速度了。

原创文章,转载请注明来源www.aspbc.com,谢谢。

关于我们-广告合作-联系我们-积分规则-网站地图

Copyright(C)2013-2017版权所属asp编程网