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 上優化性能?
總結
以上是生活随笔為你收集整理的mysql count 优化索引_如何通过使用索引在InnoDB上优化COUNT(*)性能的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何利用python语言实现对象数组
- 下一篇: excel的mysql语言,Mysql中