mysql查询记录总数_MySQL记录总条数实现查询优化「建议收藏」

mysql查询记录总数_MySQL记录总条数实现查询优化「建议收藏」MySQL记录总条数实现查询优化发布时间:2020-05-0811:04:00来源:亿速云阅读:268作者:三月本文主要给大家介绍MySQL记录总条数实现查询优化,文章内容都是笔者用心摘选和编辑的,具有一定的针对性,对大家的参考意义还是比较大的,下面跟笔者一起了解下MySQL记录总条数实现查询优化吧。1、COUNT(*)和COUNT(COL)COUNT(*)通常是对主键进行索引扫描,而COUNT…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

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

发布时间:2020-05-08 11:04:00

来源:亿速云

阅读:268

作者:三月

本文主要给大家介绍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记录总条数实现查询优化,很多读者朋友肯定多少有一定的了解,如需获取更多的行业知识信息 ,可以持续关注我们的行业资讯栏目的。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/197753.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • Spring Boot 中的异步调用[通俗易懂]

    Spring Boot 中的异步调用[通俗易懂]SpringBoot中的异步调用通常我们开发的程序都是同步调用的,即程序按照代码的顺序一行一行的逐步往下执行,每一行代码都必须等待上一行代码执行完毕才能开始执行。而异步编程则没有这个限制,代码的调用不再是阻塞的。所以在一些情景下,通过异步编程可以提高效率,提升接口的吞吐量。这节将介绍如何在SpringBoot中进行异步编程。要开启异步支持,首先得在SpringBoot入口类上加上@EnableAsync注解:@SpringBootApplication@EnableAsyncpublic

  • APP测试工具大全,建议收藏「建议收藏」

    APP测试工具大全(建议收藏!!!)一、APP自动化测试工具AppiumAirtestuiautomator2(python)二、APP稳定性测试工具MonkeyMonkeyRunnerMaximUICrawler三、APP性能测试工具GTPerfdogSoloPi四、APP弱网测试&抓包工具QNETFiddlerCharles五、APP兼容性测试工具TestIn腾讯优测百度MTC阿里MQC六、APP安全测试工具OWASPZA.

  • 华为9月3日或推出麒麟9000;TiDB 3.0.18 发布| 极客头条

    华为9月3日或推出麒麟9000;TiDB 3.0.18 发布| 极客头条「极客头条」——技术人员的新闻圈!CSDN的读者朋友们早上好哇,「极客头条」来啦,快来看今天都有哪些值得我们技术人关注的重要新闻吧。国内要闻华为9月3日举行IFA活动:推出麒麟9000,Mate40发布时间或确认华为宣布将于德国当地时间9月3日下午14点(北京时间20点)举办IFA2020主题演讲,预计将会推出5nm麒麟90005G处理器,并且公布Mate40系列发布时间。从目前已有的消息来看,麒麟9000处理器基于台积电5nm工艺打造,并集成华为研发的新NPU、5G基带等技术。(新浪科

  • Elon Musk:同一时候颠覆几个行业的科技狂人

    Elon Musk:同一时候颠覆几个行业的科技狂人

  • ffmpeg的安装和使用教程_Anaconda安装ffmpeg

    ffmpeg的安装和使用教程_Anaconda安装ffmpeg一、ffmpeg的简介FFmpeg是一个自由软件,可以运行音频和视频多种格式的录影、转换、流功能,包含了libavcodec——这是一个用于多个项目中音频和视频的解码器库,以及libavformat——一个音频与视频格式转换库。主要参数-i——设置输入档名。-f——设置输出格式。-y——若输出文件已存在时则覆盖文件。-fs——超过指定的文件大小时则结束转换。-t——指定…

  • Linux用telnet判断端口是否通

    Linux用telnet判断端口是否通通的[root@1222~]#telnet127.0.0.14531Trying127.0.0.1…Connectedto127.0.0.1.Escapecharacteris’^]’.不通[root@1222~]#telnet127.0.0.14581Trying127.0.0.1…telnet:connecttoaddress127.0.0.1:Connectionrefused退出方式1.输入Ctrl+】键,然后

    2022年10月22日

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号