首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >innoDB上的慢计数(*)

innoDB上的慢计数(*)
EN

Stack Overflow用户
提问于 2012-07-16 21:47:46
回答 2查看 4.6K关注 0票数 4

我有一个包含3000000条记录的表message_message

当我执行count(*)查询时,它非常慢...

mysql> select count(*) from message_message

+

count(*)

+

2819416

+

集合中的1行(2分35.35秒)

解释一下: mysql> explain select count(*) from message_message

id | select_type|表|类型| possible_keys | key | key_len | ref | rows |Extra

1| SIMPLE | message_message |索引|空|主|4|空| 2939870 |使用索引

集合中的1行(0.02秒)

发生了什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-07-16 21:49:55

看看InnoDB中的This Post,你需要做一个全表扫描,在MyISAM中它是一个索引读取。

如果您使用where子句,尽管它将执行模式更改为使用索引,因此在完全无限制计数时,InnoDB通常会比MyISAM慢,而在受限计数时,性能与之匹配。

票数 5
EN

Stack Overflow用户

发布于 2012-07-16 21:51:57

如果要计算记录数,最好查询整个表并使用结果集的num_rows属性。当您想要有聚合查询(与GROUP BY结合使用)时,通常使用Count(...)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11505732

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档