mysql count() 赋值_详解 MySQL中count函数的正确使用方法

本文详细探讨了MySQL中count(*)、count(1)、count(非空字段)和count(可为空字段)的使用方法和效率差异。通过实例分析,总结出count(*)通常为最快,因为它不取值直接计数;count(常数)次之,需要逐行赋值;count(非空字段)较慢,涉及索引扫描;count(可为空字段)最慢,可能涉及null判断。最佳实践推荐使用count(*)。
摘要由CSDN通过智能技术生成

a87d8a8c6576a46fa3d9cb13e1b828eb.png

1. 描述

在MySQL中,当我们需要获取某张表中的总行数时,一般会选择使用下面的语句

select count(*) from table;

其实count函数中除了*还可以放其他参数,比如常数、主键id、字段,那么它们有什么区别?各自效率如何?我们应该使用哪种方式来获取表的行数呢?

当搞清楚count函数的运行原理后,相信上面几个问题的答案就会了然于胸。

2. 表结构

为了解决上述的问题,我创建了一张 user 表,它有两个字段:主键id和name,后者可以为null,建表语句如下。

CREATE TABLE `user` (

`id` int(11) NOT NULL AUTO_INCREMENT COMMENT "主键",

`name` varchar(255) DEFAULT NULL COMMENT "姓名",

PRIMARY KEY (`id`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8;

在该表中共有6000000条数据,前1000000条数据行的name字段为空,其余数据行name=id,使用存储过程造测试数据的代码如下

-- 使用存储过程造测试数据

d

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值