mySQL中col是什么意思_MySQL中count(*)、count(1)和count(col)的区别汇总
前言
count函数是用来统计表中或数组中记录的一个函数,count(*) 它返回检索行的数目, 不论其是否包含 NULL值。最近感觉大家都在讨论count的区别,那么我也写下吧:欢迎留言讨论,话不多说了,来一起看看详细的介绍吧。
1、表结构:
dba_jingjing@3306>[rds_test]>CREATE TABLE `test_count` (
-> `c1` varchar(10) DEFAULT NULL,
-> `c2` varchar(10) DEFAULT NULL,
-> KEY `idx_c1` (`c1`)
-> ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Query OK, 0 rows affected (0.11 sec)
2、插入测试数据:
dba_jingjing@3306>[rds_test]>insert into test_count values(1,10);
Query OK, 1 row affected (0.03 sec)
dba_jingjing@3306>[rds_test]>insert into test_count values(abc,null);
ERROR 1054 (42S22): Unknown column 'abc' in 'field list'
dba_jingjing@3306>[rds_test]>insert into test_count values('abc',null);
Query OK, 1 row affected (0.04 sec)
dba_jingjing@3306>[rds_test]>insert into test_count values(null,null);
Query OK, 1 row affected (0.04 sec)
dba_jingjing@3306>[rds_test]>insert into test_count values('368rhf8fj',null);
Query OK, 1 row affected (0.03 sec)
dba_jingjing@3306>[rds_test]>select * from test_count;
+-----------+------+
| c1 | c2 |
+-----------+------+
| 1 | 10 |
| abc | NULL |
| NULL | NULL |
| 368rhf8fj | NULL |
+-----------+------+
4 rows in set (0.00 sec)
测试:
dba_jingjing@3306>[rds_test]>select count(*) from test_count;
+----------+
| count(*) |
+----------+
| 4 |
+----------+
1 row in set (0.00 sec)
EXPLAIN: {
"query_block": {
"select_id": 1,
"message": "Select tables optimized away"
1 row in set, 1 warning (0.00 sec)
dba_jingjing@3306>[rds_test]>select count(1) from test_count;
+----------+
| count(1) |
+----------+
| 4 |
+----------+
1 row in set (0.00 sec)
EXPLAIN: {
"query_block": {
"select_id": 1,
"message": "Select tables optimized away"
1 row in set, 1 warning (0.00 sec)
dba_jingjing@3306>[rds_test]>select count(c1) from test_count;
+-----------+
| count(c1) |
+-----------+
| 3 |
+-----------+
1 row in set (0.00 sec)
"table": {
"table_name": "test1",
"access_type": "index",
"key": "idx_c1",
"used_key_parts": [
"c1"
],
"key_length": "33",
那么这里面的"key_length": "33",为什么是33呢,什么是二级索引?见下节
count(*) 和count(1) 是没有区别的,而count(col) 是有区别的
执行计划有特点:可以看出它没有查询索引和表,有时候会出现select tables optimized away 不会查表,速度会很快
Extra有时候会显示“Select tables optimized away”,意思是没有更好的可优化的了。
官方解释For explains on simple count queries (i.e. explain select count(*) from people) the extra
mySQL中col是什么意思_MySQL中count(*)、count(1)和count(col)的区别汇总相关推荐
- mysql什么情况会加意向锁_MySQL中的锁4-插入意向锁和自增锁
插入意向锁(Insert Intention Lock) 插入意向锁本质上可以看成是一个Gap Lock 普通的Gap Lock 不允许 在 (上一条记录,本记录) 范围内插入数据 插入意向锁Gap ...
- mysql中存储引擎是啥_mysql中的存储引擎
mysql存储引擎概述 什么是存储引擎? MySQL中的数据用各种不同的技术存储在文件(或者内存)中.这些技术中的每一种技术都使用不同的存储机制.索引技巧.锁定水平并且最终提供广泛的不同的功能和能力. ...
- mysql两个字段相减_MySQL 中NULL和空值的区别?
作为后台开发,在日常工作中如果要接触Mysql数据库,那么不可避免会遇到Mysql中的NULL和空值.那你知道它们有什么区别吗? 学不动了,也不想知道它们有什么区别.大兄弟,不行啊,要面试! 前些天我 ...
- mysql去重函数的使用方法_MySQL中使用去重distinct方法的示例详解
一 distinct 含义:distinct用来查询不重复记录的条数,即distinct来返回不重复字段的条数(count(distinct id)),其原因是distinct只能返回他的目标字段,而 ...
- mysql截取前几个字符串_mysql中截取指定字符前后的字符串
使用SUBSTRING_INDEX()函数 substring_index(str,delim,count) str:要处理的字符串 delim:分隔符 count:分隔符计数 例子 取出上述表中数组 ...
- mysql的视图的名词解释_MySql中的视图的概念及应用
视图的基本概念 视图是从一个或几个基本表(或者视图)导出的表.它与基本表不同,是一个虚表. 数据库只存放视图的定义,而不存放视图对应的数据,这些数据仍存放在原来的基本表中.所以基本表中的数据发生变化, ...
- mysql从库追主库日志_MySQL 中主库跑太快,从库追不上怎么整?
写这篇文章是因为之前有一次删库操作,需要进行批量删除数据,当时没有控制好删除速度 ,导致产生了主从延迟,出现了一点小事故. 今天我们就来看看为什么会产生主从延迟以及主从延迟如何处理等相关问题. 坐好了 ...
- mysql int类型需要指定长度_mysql中整数类型后面的数字,是不是指定这个字段的长度?比如int(11),11代表11个字节吗?...
原先对mysql不太理解,但也没有报错.但理解的不够深入.这次补上. 原来以为int(11)是指11个字节,int(10)就是10个字节.我错了. http://zhidao.baidu.com/li ...
- mysql 数字占几个字节_mysql中整数类型后面的数字,比如int(11),11代表11个字节吗?...
原先对mysql不太理解,但也没有报错.但理解的不够深入.这次补上. 原来以为int(11)是指11个字节,int(10)就是10个字节.我错了. http://zhidao.baidu.com/li ...
最新文章
- 2017年计算机四级试题,2017年全国计算机四级考试模拟试题与答案
- 刻意练习:LeetCode实战 -- Task28.跳跃游戏
- linux 查看 特定进程 内存
- asp.net中使用CKEditor
- 高并发下的static类成员可能存在安全隐患
- caffe 中base_lr、weight_decay、lr_mult、decay_mult代表什么意思?
- 安德鲁斯Selector简介
- centos下cmake安装
- SQL2000数据库中删除“坏表”的方法
- GPU Architect Functional Verification
- 关于心理的二十五种倾向(查理#183;芒格)-2
- Android 手机UI界面设计采纳网站
- 多模态multi-modal 与多视图multi-view
- matlab dbc文件,一种EXCEL转DBC文件的生成方法及装置与流程
- 淘口令 java,抓包获取淘口令的解决方案
- Spring项目启动时Error creating bean with name ‘xxxxxx‘: Bean with name ‘xxxxxx‘ has been injected into ot
- SCORM的对手——LOM
- Linux Mint 19.2版安装教程
- SRP简介(SRP--Single-Responsibility Principle):
- 嘉洋独家观点:关于近期股市的详解