[MYSQL] COUNT(?)的学问

目录

 

count(*)不带条件的查询

innoDB

mySam

innoDB为啥不学习mySam

show table status

innoDB几种count的对比

性能对比


count(*)不带条件的查询

innoDB

server从引擎里面load出所有的数据来累加统计。一般会找最小的那棵索引树来统计

mySam

把表的数据总量维护在一个磁盘中,直接返回 速度很快

innoDB为啥不学习mySam

MVCC每张表的数据量可能有多个,不同的事务里面查询都有多个结果。

show table status

这个命令会有表的行数,但是不准,他是随机抽一些数据页 来推算总行数

 

innoDB几种count的对比

count
 工作内容 
count(1)server从引擎中获取数据,返回的数据直接+1 
count(id)server从引擎中捞取所有数据,如果id不为空 累加统计 
count(字段)

如果字段not null类似count(id)

如果字段可为null,判断下 不为空再累加

 
count(*)把行取出来,不判空,直接累加 

性能对比

count(字段) <  count(id) < count(1) = count(*) ,推荐使用count(*)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值