在查询一个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版权协议,转载请附上原文出处链接和本声明。