mysql 查询优化 ~ select count 知多少

一 简介:今天咱们来聊聊mysql的查询总数

二 具体介绍

     1 从引擎层面说

      myisam  myisam的扫描总行数是非常快的,这是因为myisam会将表的总行数存储起来,定期维护,但是注意,一旦加入where条件,这个优势就会消失 

      innodb   innodb 的扫描总行数随着数据量的增大越来越慢,innodb自身因为MVCC机制,不同事务读取的总行数可能不同,所以维护一个单独的总行数没有什么意义

    2 从查询方式说起

      1 select  count(*)   2 select count(primary)  3 select count(非paimary) 4 select count(1)

       分析思路

        1 要考虑 值是否是NULL 2 要考虑从B+树读取记录 3 统计字段的大小

       执行效率  1=4 > 2 > 3

 三 总结

       1尽量选择 select count(*) ,因为count(*)做过优化,并不取值和进行NULL判断,更不必考虑统计字段的大小

       2 对于select count(*)的explain,如果辅助索引很小,会按照辅助索引走,如果大,就按照主键来走了,基于成本

posted @   开心的蛋黄派  阅读(5629)  评论(0编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
点击右上角即可分享
微信分享提示