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

简介: 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;
相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
相关文章
|
存储 缓存 关系型数据库
MySQL的count()方法慢
MySQL的 `COUNT()`方法在处理大数据量时可能会变慢,主要原因包括数据量大、缺乏合适的索引、InnoDB引擎的设计以及复杂的查询条件。通过创建合适的索引、使用覆盖索引、缓存机制、分区表和预计算等优化方案,可以显著提高 `COUNT()`方法的执行效率,确保数据库查询性能的提升。
2177 12
|
缓存 NoSQL 关系型数据库
MySQL战记:Count( *)实现之谜与计数策略的选择
本文深入探讨了MySQL中`count(*)`的不同实现方式,特别是MyISAM和InnoDB引擎的区别,以及各种计数方法的性能比较。同时,文章分析了使用缓存系统(如Redis)与数据库保存计数的优劣,并强调了在高并发场景下保持数据一致性的挑战。
432 0
MySQL战记:Count( *)实现之谜与计数策略的选择
|
SQL 缓存 关系型数据库
MySQL Limit实现原理
本文深入解析了MySQL中`LIMIT`子句的实现原理及其在分页、性能优化等场景下的应用技巧。文章详细介绍了`LIMIT`的基本语法、MySQL内部处理流程,以及如何通过索引优化、覆盖索引等策略提升分页查询的性能,并提供了实践建议。
1207 3
|
SQL 关系型数据库 MySQL
MySQL性能探究:count(*)与count(1)的性能对决
在MySQL数据库的性能优化中,对查询语句的细微差别有着深入的理解是非常重要的。`count(*)`和`count(1)`是两种常用的聚合函数,用于计算行数。在面试中,面试官经常会问到这两种函数的性能差异。本文将探讨`count(*)`与`count(1)`的性能对比,并整理十道经典的MySQL面试题,帮助你在面试中游刃有余。
465 3
|
关系型数据库 MySQL PostgreSQL
postgresql和mysql中的limit使用方法
postgresql和mysql中的limit使用方法
823 1
|
SQL 缓存 关系型数据库
MySQL Limit实现原理
本文详细探讨了MySQL中`LIMIT`子句的实现原理及其在不同场景下的应用。`LIMIT`用于控制查询结果的行数,结合`OFFSET`可实现分页查询。其内部实现涉及解析器、优化器和执行器三部分,通过索引利用、子查询优化等提升性能。文章还提供了性能优化策略,如索引优化、覆盖索引及延迟关联等,并给出实践建议。
594 4
|
存储 关系型数据库 MySQL
深度剖析:MySQL聚合函数 count(expr) 如何工作?如何选择?
本文详细探讨了MySQL中count(expr)函数的不同形式及其执行效率,包括count(*)、count(1)、count(主键)、count(非主键)等。通过对InnoDB和MyISAM引擎的对比分析,解释了它们在不同场景下的实现原理及性能差异。文章还通过实例演示了事务隔离级别对统计结果的影响,并提供了源码分析和总结建议。适合希望深入了解MySQL统计函数的开发者阅读。
290 1
|
关系型数据库 MySQL 索引
MySQL的group by与count(), *字段使用问题
正确使用 `GROUP BY`和 `COUNT()`函数是进行数据聚合查询的基础。通过理解它们的用法和常见问题,可以有效避免查询错误和性能问题。无论是在单列分组、多列分组还是结合其他聚合函数的场景中,掌握这些技巧和注意事项都能大大提升数据查询和分析的效率。
1730 0
|
Cloud Native 关系型数据库 MySQL
云原生数据仓库AnalyticDB产品使用合集之如何修改云ADB MySQL版的默认LIMIT
阿里云AnalyticDB提供了全面的数据导入、查询分析、数据管理、运维监控等功能,并通过扩展功能支持与AI平台集成、跨地域复制与联邦查询等高级应用场景,为企业构建实时、高效、可扩展的数据仓库解决方案。以下是对AnalyticDB产品使用合集的概述,包括数据导入、查询分析、数据管理、运维监控、扩展功能等方面。
363 21
|
SQL 关系型数据库 MySQL
MySQL设计规约问题之为什么在使用LIMIT进行分页时要注意效率,并且LIMIT的值越大效率越低
MySQL设计规约问题之为什么在使用LIMIT进行分页时要注意效率,并且LIMIT的值越大效率越低

推荐镜像

更多