Mysql中count(*)和limit同时使用的问题

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介: Mysql中count(*)和limit同时使用的问题

首先来了解一下MYSQL 中的 COUNT(*)

count()四种写法:

count(*) 包括所有列,相当于统计表的行数,不忽略列值为NULL的记录。

count(1) 忽略所有列,1表示一个固定值,也可以用count(2)、count(3)代替,不忽略列值为NULL的记录。

count(列名) 只包括指定列,返回指定列的记录数,会忽略列值为NULL的记录。

count(distinct 列名) 只包括列名指定列,返回指定列的不同值的记录数,忽略列值为NULL的记录

执行效率比较

若列为主键,count(列名)效率优于count(1)

若列不为主键,count(1)效率优于count(列名)

若表中存在主键,count(主键列名)效率最优

若表中只有一列,则count(*)效率最优

若表有多列,且不存在主键,则count(1)效率优于count(*)

特例

select count(’’) from table;-返回表的记录数

select count(0) from table;-返回表的记录数

select count(null) from table;-返回0

 

.带有count的sql语句只会返回一条记录

select *,count() from `sys_user` limit 0,8;

接着看看执行顺序

带有limit的sql语句是最后执行的

select *,count() from `sys_user` limit 0,8;

以上sql语句将返回空行,*因为count()只会使sql语句产生一条结果记录,所以后面的limit 1,500 是完全找不到的。

 

 

两个条件不能混用

SELECT COUNT(1) FROM ( SELECT * FROM sys_user LIMIT 0,20 ) temp;
相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
6月前
|
算法 关系型数据库 MySQL
【MySQL系列】-ORDER BY……HAVING详解及limit
文章目录 创建学校联考成绩表 一、obder by…… having…… 1.格式: 2.作用: 3.使用: 4.使用细节: 二、limit 1. limit的格式: 2. limit的作用: 3.使用:
|
4月前
|
关系型数据库 MySQL 数据库
MySQL 数据库操作指南:LIMIT,OFFSET 和 JOIN 的使用
您可以通过使用"LIMIT"语句来限制查询返回的记录数量。以下是一个示例,获取您自己的Python服务器中"customers"表中的前5条记录:
94 1
|
9月前
|
关系型数据库 MySQL
MySQL中limit语句
MySQL中limit语句
60 0
|
关系型数据库 MySQL 索引
MySQL关于Count你知道多少
count的含义:count() 是一个聚合函数,对于返回的结果集,一行行地判断,如果 count 函数的参数不是 NULL,累计值就加 1,否则不加。最后返回累计值。
146 0
MySQL关于Count你知道多少
|
SQL 关系型数据库 MySQL
MySQL SELECT LIMIT 实例
MySQL SELECT LIMIT 实例
70 0
|
SQL 自然语言处理 关系型数据库
MySQL 中LIMIT的使用详解
MySQL 中LIMIT的使用详解
278 0
|
SQL 安全 关系型数据库
MySQL的delete应该加 limit么 ?
在业务场景要求高的数据库中,对于单条删除和更新操作,在 delete 和 update 后面加 limit 1 绝对是个好习惯。比如,在删除执行中,第一条就命中了删除行,如果 SQL 中有 limit 1;这时就 return 了,否则还会执行完全表扫描才 return。效率不言而喻。
|
关系型数据库 MySQL
MySQL - COUNT(NULL)
MySQL - COUNT(NULL)
96 0
|
存储 关系型数据库 MySQL
MYSQL 下 count(*)、count(列)、 count(1) 理解
MYSQL 下 count(*)、count(列)、 count(1) 理解
167 0
MYSQL 下 count(*)、count(列)、 count(1) 理解
|
SQL 缓存 关系型数据库
MySQL的count(*)、count(1)和count(列名)区别
MySQL的count(*)、count(1)和count(列名)区别
834 0
MySQL的count(*)、count(1)和count(列名)区别