mysql count 不等于_Mysql 不同的 count 区别

不同 count 的区别:

count(*)、count(主键 id)和 count(1) 都表示返回满足条件的结果集的总行数;而 count(字 段), 则表示返回满足条件的数据行里面,参数“字段”不为 NULL 的总个数。

性能:

count(主键 id):InnoDB 引擎会遍历整张表,把每一行的 id 值都取出来,返回 给 server 层。server 层拿到 id 后,判断是不可能为空的,就按行累加。

count(1):InnoDB 引擎遍历整张表,但不取值。server 层对于返回的每一行, 放一个数字“1”进去,判断是不可能为空的,按行累加。

单看这两个用法的差别的话,能对比出来,count(1)执行得要比 count(主键 id)快。因为 从引擎返回 id 会涉及到解析数据行,以及拷贝字段值的操作。

对于 count(字段)来说:

1)如果这个“字段”是定义为 not null 的话,一行行地从记录里面读 出这个字段,判断不能为 null,按行累加;

2)如果这个“字段”定义允许为 null,那么执行的时候,判断到有可能是 null,还要把值取 出来再判断一下,不是 null 才累加。

也就是,server 层要什么字段,InnoDB 就返回什么字段。 但是 count(*)是例外,并不会把全部字段取出来,而是专门做了优化,不取值。count(*) 肯定不是 null,按行累加。 看到这里,你一定会说,优化器就不能自己判断一下吗,主键 id 肯定非空啊,为什么 不能按照 count(*)来处理,多么简单的优化啊。当然,MySQL 专门针对这个语句进行优化, 也不是不可以。但是这种需要专门优化的情况太多了,而且 MySQL 已经优化过 count(*)了, 我们直接使用这种用法就可以了。

结论:

所以结论是:按照效率排序的话,count(字段)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/367168.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python3爬虫(四)请求库的使用requests

Infi-chu: http://www.cnblogs.com/Infi-chu/ 一、基本用法: 1. 安装: pip install requests 2. 例子: import requests url http://www.baidu.com r requests.get(url) print(type(r)) # 类型是str(JSON格式) pr…

后台通过request.setAttribute向前台传值,前台如何去获取其中的对象或属性值

讲这些,我们先来了解一下request.setAttribute和request.setAttribute()这两种方法的作用。 request.getAttribute("nameOfObj"); 可得到jsp页面表单中输入框内的value。(其实表单控件中的Object的name与value是存放在一个哈希表中的&#xff…

两个用于Eclipse的TCK –开源到底有什么?

早在5月,Oracle就向Eclipse Foundation 授予了兼容性测试奖学金 。 在过去的几天里,这引起了媒体的关注,我只是想确保我对整个过程和详细动作有所了解。 看起来像是一见钟情的简单诚实的礼物实际上具有更多的方面。 但让我们从头开始&#xf…

尝试连接到服务器时出错请检查虚拟机管理器,Hyper-V尝试连接到服务器出错无效类的解决方法...

Hyper-V尝试连接到服务器出错无效类的解决方法Windows10安装Hyper-V后没有自动连接到本地计算机,手工连接失败,提示:引用内容尝试连接到服务器"DESKTOP-6P9L2HB"时出错。请检查虚拟机管理服务是否正在运行以及是否授权你连接到此服…

Flask和mysql多线程_Flask解析(二):Flask-Sqlalchemy与多线程、多进程

Sqlalchemyflask-sqlalchemy的session是线程安全的,但在多进程环境下,要确保派生子进程时,父进程不存在任何的数据库连接,可以通过调用db.get_engine(appapp).dispose()来手动销毁已经创建的engine,然后再派生子进程。…

深入理解redis数据类型

转载请注明出处:https://www.cnblogs.com/wenjunwei/p/9720033.html redis的存储模型 redis不是普通的键值对存储,它实际上是一个数据结构存储服务器,可以支持不同类型的值。这意味着redis相比传统键值对字符串key和字符串value存储来说&…

centos7 登陆报错 grep:write error

出现这个原因是因为磁盘空间满了 通过df -h查看存储空间 发现磁盘空间满了,可以用 find / -type f -size 1000M 查找大于1000M的文件删除 然后找到用rm -rf 命令删除 然后就不会出现这个问题了!转载于:https://www.cnblogs.com/lxs1314/p/8961113.html

你敢在post和get上刁难我,就别怪我装逼了

> 掘金编辑提醒:本文疑似有误,参考 听说「99% 的人都理解错了 HTTP 中 GET 与 POST 的区别」 之前好几次面试都被问到post和get有什么区别,肯定很多同学和我一样说了一大堆什么post比get安全,get比post传的少乱起八糟这样的答案…

昂首阔步:让开发人员喜欢使用您的REST API

随着JAX-RS API的发展,以及今年早些时候在JSR-339下发布的2.0版本,使用出色的Java平台创建REST服务变得更加容易。 但是,极大的简化带来了巨大的责任:记录所有这些API,以便其他开发人员可以快速了解如何使用它们。 不…

thinkphp mysql 更新_THINKPHP5修改数据库数据出现“缺少更新条件”的错误

查询数据库的数据分配显示在页面山修改后的数据准备传递到第三章图里接收数据,然后修改到数据问题出现的环境背景及自己尝试过哪些方法相关代码// 请把代码文本粘贴到下方(请勿用图片代替代码)第一张图代码public function edit(){$db_01new DB();$id_editRequest::…

angular ajax get post 参数,Angular的Post 传递参数问题及解决方法

一、传递参数过程中POST会出问题,问题来源:我们都知道向后台传参可以使用get、post,其形式类似于nameiyy&id001 。但是在angular中却发现使用$http post 进行异步传输的过程中后台是接收不到数据的,其实这个问题就是因为请求头…

[No0000187]可能是把Java内存区域讲的最清楚的一篇文章

写在前面(常见面试题) 基本问题: 介绍下 Java 内存区域(运行时数据区)Java 对象的创建过程(五步,建议能默写出来并且要知道每一步虚拟机做了什么)对象的访问定位的两种方式&#xff…

Java语言基础及java核心

一、Java语言特点 1、 简单 2、 面向对象 3、 分布式 4、 健壮 5、 安全 6、 中性架构跨平台 7、 超强的可移植性 8、 高性能 9、 多线程 二、java的环境变量 JAVA_HOMEC:\Program Files\Java\jdk1.8.0_101 (到你的安装目录下) CLASSPASH./ &#xff0…

如何使用Quartz Scheduler和日志记录创建Web应用程序

我有时会在Quartz Scheduler论坛中为用户提供帮助。 有时,有人会问他/她如何在Web应用程序中设置Quartz。 实际上,这是一件相当简单的事情。 该库已经带有一个ServletContextListener ,您可以使用它启动调度程序。 我将在这里向您展示一个简单…

移动端日期选择插件rolldate

rolldate为上一版jquery移动端时间插件的全新版本,目前保留了上一版的大部分功能,并且增加了回调函数,以及主题风格选取,最重要的是解决了上一版本的遗留问题,依赖jquery、滑动不够流畅、参数设计不够合理等等。开发日…

ik分词器 mysql php_php环境下使用elasticSearch+ik分词器进行全文搜索

首先需要说明的一点是,如果需要启用ik分词器,那么分词器的版本必须与es版本一致,即6.3.0的分词器需要同样6.3.0版本的es支持。安装javawin-64bit的安装包需要去java英文官网查找安装ES6.3.0版本es下载地址:https://www.elastic.co…

服务器如何查看gpu型号,linux 查看服务器gpu

linux 查看服务器gpu 内容精选换一换本节操作介绍通过华为云APP连接Linux实例的操作步骤。云服务器状态为“运行中”。已获取Linux云服务器用户名和密码,忘记密码请参考在控制台重置云耀云服务器密码重置密码。云耀云服务器已经绑定弹性公网IP。所在安全组入方向已开…

Antd-Select组件的深入用法

一、Antd-Select提供几种类型 最基础版只提供下拉功能的选择器带搜索功能的下拉选择器可多选的下拉选择器可搜索、可多选、可随意输入内容的tag下拉选择器(支持自动分词)多级联动下拉选择器搜索远程数据下拉框二、一些潜在用法 如果Select.Option选项的数量特别大:2k、3k... 假…

WS-Security:使用BinarySecurityToken进行身份验证

众所周知,WS-Security设定的目标之一是对SOAP消息强制执行完整性和/或保密。 在完整性的情况下,添加到SOAP消息的签名是数学过程的结果,该过程涉及发送者的私钥,从而导致加密的消息摘要。 默认情况下,大多数框架&…

Vue(ES6)中的data属性为什么不能是一个对象?

以下引官网原文:当一个组件被定义,data 必须声明为返回一个初始数据对象的函数,因为组件可能被用来创建多个实例。如果 data 仍然是一个纯粹的对象,则所有的实例将共享引用同一个数据对象!通过提供 data 函数&#xff…