本篇内容介绍了“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的时候,使用了临时表
大型站长资讯类网站! https://www.0455zz.com