mysql count 优化索引_如何通过使用索引在InnoDB上优化COUNT(*)性能

我有一个小而狭窄的InnoDB表,大约有900万条记录。在桌子上count(*)或count(id)桌子上做的速度非常慢(超过6秒):

DROP TABLE IF EXISTS `perf2`;

CREATE TABLE `perf2` (

`id` int(11) NOT NULL AUTO_INCREMENT,

`channel_id` int(11) DEFAULT NULL,

`timestamp` bigint(20) NOT NULL,

`value` double NOT NULL,

PRIMARY KEY (`id`),

UNIQUE KEY `ts_uniq` (`channel_id`,`timestamp`),

KEY `IDX_CHANNEL_ID` (`channel_id`)

) ENGINE=InnoDB DEFAULT CHARSET=latin1;

RESET QUERY CACHE;

SELECT COUNT(*) FROM perf2;

虽然该语句不是运行得太频繁,但对其进行优化将是不错的选择。根据http://www.cloudspace.com/blog/2009/08/06/fast-

mysql-innodb-count-really-

fast/,这可以通过强制InnoDB使用索引来实现:

SELECT COUNT(id) FROM perf2 USE INDEX (PRIMARY);

解释计划似乎很好:

id select_type table type possible_keys key key_len ref rows Extra

1 SIMPLE perf2 index NULL PRIMARY 4 NULL 8906459 Using index

什么是/如何COUNT(*)在InnoDB 上优化性能?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值