社区
MySQL
帖子详情
SELECT COUT(主键)、count(1)、count(*)的区别
你们都是坏人
2008-09-19 06:10:02
SELECT COUT(主键)、count(1)、count(*)的区别
...全文
372
8
打赏
收藏
SELECT COUT(主键)、count(1)、count(*)的区别
SELECT COUT(主键)、count(1)、count(*)的区别
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
8 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
xiang3630
2008-10-16
打赏
举报
回复
增加一条有NULL的记录测试一下就知道
测了,都一样!50000条数据
WWWWA
2008-09-22
打赏
举报
回复
增加一条有NULL的记录测试一下就知道
wwwwb
2008-09-22
打赏
举报
回复
如果只是主键,那么3个SQL语句结果是一致的,因为主键不能为NULL,如是其它字段,且有NULL的话,结果是
有区别的
wwwwb
2008-09-22
打赏
举报
回复
不是吧,COUNT(*)count(1)是算NULL行的,其它不算NULL
zhifeiji007
2008-09-21
打赏
举报
回复
select cout(主键),好像没有见过。
其他两个能得出相同结果。
懒得去死
2008-09-19
打赏
举报
回复
效果是一样的,性能也没有啥区别!
随风醉舞
2008-09-19
打赏
举报
回复
返回table表里面的记录总数
select count(1) from table的效率更好。
fcoolx
2008-09-19
打赏
举报
回复
根据explian 得出结论 没区别
mysql> explain select count(1) from table1;
+----+-------------+-------+------+---------------+------+---------+------+------+------------------------------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+----+-------------+-------+------+---------------+------+---------+------+------+------------------------------+
| 1 | SIMPLE | NULL | NULL | NULL | NULL | NULL | NULL | NULL | Select tables optimized away |
+----+-------------+-------+------+---------------+------+---------+------+------+------------------------------+
1 row in set (0.00 sec)
mysql> explain select count(*) from table1;
+----+-------------+-------+------+---------------+------+---------+------+------+------------------------------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+----+-------------+-------+------+---------------+------+---------+------+------+------------------------------+
| 1 | SIMPLE | NULL | NULL | NULL | NULL | NULL | NULL | NULL | Select tables optimized away |
+----+-------------+-------+------+---------------+------+---------+------+------+------------------------------+
1 row in set (0.00 sec)
mysql> explain select count(id) from table1;
+----+-------------+-------+------+---------------+------+---------+------+------+------------------------------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+----+-------------+-------+------+---------------+------+---------+------+------+------------------------------+
| 1 | SIMPLE | NULL | NULL | NULL | NULL | NULL | NULL | NULL | Select tables optimized away |
+----+-------------+-------+------+---------------+------+---------+------+------+------------------------------+
深入分析:mysql统计条数
count
(*)、
count
(
主键
)、
cout
(1)、
count
(二级索引字段)、
count
(普通字段)性能比较
MyISAM 存储引擎(mysql5.5前):
count
(*) 性能最佳,因为存储引擎会存储精确的行数,因此不采用其他写法。 InnoDB 存储引擎(mysql5.5后): 先说结论,性能由高到低排序为:
count
(*) =
count
(最短非空索引字段) ≈
count
(1) >
count
(比
主键
短的非空索引字段) >
count
(
主键
) >
count
(普通索引字段) >
count
(普通字段) 看到这个结论,可能有人会说卧槽 ,这是什么玩意,那么记住,任何情况都用coun
你还在认为
count
(1) 比
count
(*) 效率高?
点击上方“Java基基”,选择“设为星标”做积极的人,而不是积极废人!源码精品专栏原创 | Java 2020超神之路,很肝~中文详细注释的开源项目RPC 框架 Dubbo 源码解析网...
count
(1) 比
count
(*) 效率高么? 侵删
MySQL
count
(1) 真的比
count
(*) 快么? 反正同事们都是这么说的,我也姑且觉得对吧,那么没有自己研究一下究竟?如果我告诉你他们一样,你信么? 有Where条件的
count
,会根据扫码结果
count
一下所有的行数,其性能更依赖于你的Where条件,所以文章我们仅针对没有Where的情况进行说明。 MyISAM 引擎会把一个表的总行数记录了下来,所以在执行c...
MySQL学习笔记-不同
count
统计性能的比较
文章目录MySQL学习笔记-不同
count
统计性能的比较1.笔记图2.
count
(*) 的实现方式3.InnoDB
count
(*) 优化4.
count
(*) 业务层优化5.InnoDB 不同的
count
用法6.课后问题 MySQL学习笔记-不同
count
统计性能的比较 在做业务开发的时候,经常会使用
count
() 函数对满足条件的结果集统计数量,但执行
select
count
(*) from t 这种语句的时候会很慢,而
count
(*)、
count
(1)、
count
(字段)、
count
(
主键
id
MySQL(五)函数(常用函数,聚合函数,
count
()...)
文章目录5-mysql函数5.1,常用函数数学运算字符串函数时间与日期函数系统函数5.2,聚合函数(常用)
cout
(1)和
count
(*)的
区别
执行结果:执行效率:补充 5-mysql函数 官网:MySQL :: MySQL 5.7 参考手册 :: 12.1 内置函数和运算符参考 5.1,常用函数 数学运算 -- 常用函数 -- 数学运算
select
ABS(-8) -- 绝对值 8
select
CEILING(9.5) -- 向上取整 10
select
FLOOR(9.5) -- 向下取整 9
MySQL
57,063
社区成员
56,759
社区内容
发帖
与我相关
我的任务
MySQL
MySQL相关内容讨论专区
复制链接
扫一扫
分享
社区描述
MySQL相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章