一、count(主键)
innodb引擎会遍历整张表,把每一行的主键值都取出来返回给服务层,服务层拿到主键后直接按行进行计数累加
二、count(特定字段)
2.1 没有not null约束
innodb引擎会遍历整张表,把每一行的字段值都取出来返回给服务层,服务层判断是否为null,不为null计数累加
2.2 有not null约束
innodb引擎会遍历整张表,把每一行的字段值都取出来返回给服务层,服务层直接按行进行计数累加
三、count(1)
innodb引擎会遍历整张表,但不取值,服务层对于返回的每一行,放一个数字1进去,直接按行计数累加
四、count(*)
innodb引擎会遍历整张表每一行,但并不会全部把字段值取出来,而是专门做了优化,不取值,服务层直接按行计数累加,
性能比上边几个高。
五、总结
上边几种count用法,主键不可能为Null,只有count(字段) 会忽略字段值为null的行,count(1)和count(*)都不会忽略null。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!