千家信息网

MySQL记录总条数实现查询优化

发表于:2025-11-07 作者:千家信息网编辑
千家信息网最后更新 2025年11月07日,本文主要给大家介绍MySQL记录总条数实现查询优化,文章内容都是笔者用心摘选和编辑的,具有一定的针对性,对大家的参考意义还是比较大的,下面跟笔者一起了解下MySQL记录总条数实现查询优化吧。1、COU
千家信息网最后更新 2025年11月07日MySQL记录总条数实现查询优化

本文主要给大家介绍MySQL记录总条数实现查询优化,文章内容都是笔者用心摘选和编辑的,具有一定的针对性,对大家的参考意义还是比较大的,下面跟笔者一起了解下MySQL记录总条数实现查询优化吧。

1、COUNT(*)和COUNT(COL)

COUNT(*)通常是对主键进行索引扫描,而COUNT(COL)就不一定了,另外前者是统计表中的所有符合的纪录总数,而后者是计算表中所有符合的COL的纪录数。还有有区别的。
优化总结,对于MyISAM表来说:

1.任何情况下SELECT COUNT(*) FROM tablename是最优选择;

2.尽量减少SELECT COUNT(*) FROMtablename WHERE COL = 'value' 这种查询;

3.杜绝SELECT COUNT(COL) FROM tablename WHERE COL2 ='value' 的出现。

2、COUNT(*)还是COUNT(id)

根据我的理解,应该是使用COUNT(id)更加快速,因为如果我的id是一个自增的主键,那么计算它的数量显然比计算所有字段的数量需要消耗的资源少一些。但是我不止在一篇的类似指导mysql查询加速的文章中看到,都建议我们使用SELECT COUNT(*)而非直接COUNT主键,这是为什么呢?

貌似是因为用MyISAM引擎的表存储了总条数,如果没有WHERE或者WHERE恒为真(比如WHERE 1),那么COUNT(*)可以直接返回总条数。

另外,很显然COUNT(*)不是"计算所有的字段",显然MySQL会把*解析成"一条数据"的意思。

测试数据,简单对比一下,未做更深入的测试:


#0.817-一百万条的查询时间select count(*) from student ;#0.789-一百万条的查询时间select count(id) from student;#1.011-一百万条的查询时间select count(name) from student;#1.162-一百万条的查询时间SELECT COUNT(*) FROM student WHERE namelike '%xiaoli%';#默认用主键索引查询,但是加上like条件后索引失效

看完以上关于MySQL记录总条数实现查询优化,很多读者朋友肯定多少有一定的了解,如需获取更多的行业知识信息 ,可以持续关注我们的行业资讯栏目的。

查询 万条 时间 索引 字段 数据 数量 文章 笔者 纪录 行业 还是 测试 信息 内容 建议 引擎 总数 情况 意义 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 福建品质软件开发服务检测中心 地址空间映射 数据库 基层做好网络安全方面的建议 为什么要使用数据库软件 app软件开发制作方法 太仓智能网络技术专业服务 阿里云mqtt服务器最低多少钱 笔记本配置成服务器的用处 美国网络安全注意事项 陇南邮储银行网络安全 国际服中显示连接不上服务器 计算机网络技术专业专接本 产品溯源系统软件开发需要 ping 不通服务器 东营软件开发培训班 福州紫讯网络技术有限公司 融资 2020网络安全发展改善 软件开发和网页开发 电子科技大学网络安全专业好吗 河南安防卫星授时服务器云主机 vmvare服务器 中方服务器在哪 袁嘉骏四川大学网络安全学院 墨西哥商品分析软件开发 1024服务器 湖北工业软件开发正规平台 社区网络安全隐患排查报告 互联网软件开发基础是什么 软件开发投资项目具体到哪里 远方软件开发公司
0