Select Count 聚合函数三种不同写法区别与效率性能比较

简介: Select Count 聚合函数三种不同写法区别与效率性能比较

count()是SQL语言中的聚合函数,它表示返回所有满足条件的结果集的总行数。
常用的三种写法区别:
count(字段列): 不包括对NULL记录的统计,计算列或这列的组合不为空的计数。
count(1) :包括对NULL记录的统计;查询效率要比count(*)要快;给定一个固定值,不代表实际意义 。
count(*): 包括对NULL记录的统计;当索引列为非空时,可以用到索引。

效率比较:

 count(主键列) > count(1) > count(*);

count(*)与count(1)资源耗用情况分别如下:
Image.png

相关文章
|
1月前
|
SQL 存储 大数据
SQL中DISTINCT关键字的使用与性能影响分析
SQL中DISTINCT关键字的使用与性能影响分析
|
SQL 数据挖掘 Python
SQL练习:2(简单)+1(中等),常规题(group by\order by\avg...)
SQL练习:2(简单)+1(中等),常规题(group by\order by\avg...)
183 0
SQL练习:2(简单)+1(中等),常规题(group by\order by\avg...)
九、提高group by语句的效率
九、提高group by语句的效率
302 0
|
存储 缓存 关系型数据库
【MySQL 源码】UNION 比 UNION ALL 的性能差很多吗?
本文从源码角度分析了一下 MySQL 中 union 和 union all 的区别;得出了以下结论: union 和 union all 都会创建临时表, 但是又不太一样; 二者的查询计划不一样;union 默认会创建一个以返回列作为 key 的临时表, 所谓过滤就是将数据插入这个临时表; 临时表装数据的容器实际上是一个 unordered_set; 有一种存储引擎叫做临时表; union all 则是直接读取表的数据并返回给客户端, 不走临时表; union all 和 union 的场景还是得根据需要来判断, 如果没有 distinct 的需求话, 数据又不多, 可以考虑使用 union
278 0
【MySQL 源码】UNION 比 UNION ALL 的性能差很多吗?
|
SQL C++ Python
SQL高级查询技巧(两次JOIN同一个表,自包含JOIN,不等JOIN)
掌握了这些,就比较高级啦 Using the Same Table Twice 如下面查询中的branch字段 SELECT a.account_id, e.emp_id, b_a.name open_branch, b_e.
4574 0
|
SQL 缓存 算法
写出好的Join语句,前提你得懂这些
因为驱动结果集越大,意味着需要循环的次数越多,也就是说在被驱动结果集上面所 需要执行的查询检索次数会越多。比如,当两个表(表 A 和 表 B) Join 的时候,如果表 A 通过 WHERE 条件过滤后有 10 条记录,而表 B 有 20 条记录。如果我们选择表 A 作为驱动表,也就是被驱动表的结果集为 20,那么我们通过 Join 条件对被驱动表(表 B)的比较过滤就会有 10 次。反之,如果我们选择表 B 作为驱动表,则需要有 20 次对表 A 的比较过滤。小贴士1:驱动表的定义:当进行多表连接查询时,1.指定了联接条件时,满足查询条件的记录行数少的表为驱动表,2.未指定联接条件时,行数少
|
SQL 关系型数据库 PostgreSQL
distinct xx和count(distinct xx)的变态递归优化方法
今天要说的这个优化是从前面一篇讲解《performance tuning case :use cursor or trigger replace group by and order by》http://blog.163.com/digoal@126/blog/static/16387704020.
10954 0