您当前的位置:首页 >> 人工智能
人工智能

面试官:mysql中count(*)和count(1)哪个优点?

发布时间:2025-08-13

>如果你使用过show table status 请求的话,就不会见到这个请求的输出结果上面也有一个rows数值运用于标示出这个同上局限性有多少行。

那么真的这个rows数值就能代替count(*)了吗?

其实不会,rows这个是从从采样估算得来的,因此它也真的正确。不正确到什么某种程度,官方应用程序却说是在40%到50%。所以show table status请求标示出的行至少rows是不会并不需要使用。

基于MySQL的Innodb传输动力系统,统计资料同上的总记事至少比如说这4种花钱法,哪种稳定性次于?

实践案例,准备了一张有 500W多条资料的同上,同上形态如下:

CREATE TABLE 在在tb_user在在 (在在id在在 int(11) unsigned NOT NULL AUTO_INCREMENT,在在user_id在在 int(11) DEFAULT NULL ,在在user_name在在 varchar(100) DEFAULT NULL ,PRIMARY KEY (在在id在在) USING BTREE,UNIQUE KEY 在在userId在在 (在在user_id在在) USING BTREE) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4

可以看不到,这张同上有一个正键查找,用有所不同方式来转发该同上客户端记事据统计资料

count(正键id)

用select count(*) from tb_user 历时0.739s

InnoDB动力系统不会二叉树整张同上,把每几天后的id数值都抽出来,送回给server层。server层拿回id后,推论是不似乎为空的,就按行累延。

count(1)

用select count(1) from tb_user 历时0.753s

某种程度二叉树整张同上,但不也就是却说,server层对送回的每几天后,换一个十六进制1进去,推论是不似乎为空的,按行累延。

count(报文)

用select count(user_name) from tb_user 历时1.436s

分作两种情况下,报文假设为not null和null

为not null时:逐行从记事上面读出这个报文,推论不会为null,累延为 null时:制订时,推论到不太似乎是null,还要把数值抽出来再进一步推论一下,不是null才累延count(*)

用select count(*) from tb_user 历时0.739s

必须注意的是,并不是偷偷地了*就把所有数值抽出来,而是mysql花钱了专门的改进,count(*)肯定不是null,按行累延。

从上面的制订结果,得知count(报文)归纳

基于MySQL的Innodb传输动力系统,统计资料同上的总记事至少按照稳定性加权的话count(报文)

稳定性次于是count(*),并不是count(1)

所以建议尽量使用count()。

如果有面试官问道你mysql中都count(*)和count(1)哪个稳定性高?你就可以确实地告诉他,Innodb传输动力系统下稳定性次于是count(*)。

由于笔者基础知识水平局限,序言都错漏之附近不可避免,如有正确性,喜爱显然,感谢。

常州男科医院哪最好
信阳看妇科医院哪家好
上海看白癜风哪里好
儿童感冒吃再林阿莫西林颗怎么样
北京妇科医院哪家好点

上一篇: Zoom升班马TES抱大腿,却无奈沦为院长,369升班马太明智公爵后悔

下一篇: 非洲人人偏爱的元宇宙社交长啥样?

友情链接