加入收藏 | 设为首页 | 会员中心 | 我要投稿 温州站长网 (https://www.0577zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

MySQL中的count 、union 和group by语句的使用方法

发布时间:2022-01-18 13:36:18 所属栏目:MySql教程 来源:互联网
导读:本篇内容介绍了MySQL中的count()、union()和group by语句的用法的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成! 一、MySQL中count()的不同用法 coun
        本篇内容介绍了“MySQL中的count()、union()和group by语句的用法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
 
一、MySQL中count()的不同用法
count()是一个聚合函数,对于返回的结果集,一行行地判断,如果count函数的参数不是NULL,累计值就加1,否则不加。最后返回累计值。【相关推荐:mysql视频教程】
 
1.对于count(主键id)来说,InnoDB引擎会遍历整张表,把每一行的id值都取出来,返回给server层。server层拿到id后,判断是不可能为空的,就按行累加
 
2.对于count(1)来说,InnoDB引擎遍历整张表,但不取值。server层对于返回的每一行,放一个数字1进入,判断是不可能为空的,按行累加
 
3. 对于count(*)来说,并不会把全部字段取出来,而是专门做了优化。不取值,count(*)肯定不是null,按行累加
 
MySQL中的count()、union()和group by语句的用法
 
二、union执行流程
为了便于量化分析,以下面表t1来举例
 
create table t1(id int primary key, a int, b int, index(a));
 
CREATE DEFINER=`root`@`%` PROCEDURE `idata`()
BEGIN
declare i int;
  set i=1;
  while(i<=1000)do
    insert into t1 values(i, i, i);
    set i=i+1;
  end while;
 
END
分析下面这条SQL语句:
 
(select 1000 as f) union (select id from t1 order by id desc limit 2);
union的语义是取这两个子查询结果的并集。并集的意思是这两个集合加起来,重复的行只保留一行
  
第二行的key=PRIMARY,说明第二个子句用到了索引id
第三行的Extra字段,表示在对子查询的结果集做union的时候,使用了临时表

(编辑:温州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读