首页
学习
活动
专区
圈层
工具
发布

select count(*)、count(1)、count(主键列)和count(包含空值的列)有何区别?

下班路上看见网上有人问一个问题: oracle 10g以后count(*)和count(非空列)性能方面有什么区别?...前三个均为表数据总量,第四个SQL结果是99999,仅包含非空记录数据量,说明若使用count(允许空值的列),则统计的是非空记录的总数,空值记录不会统计,这可能和业务上的用意不同。...其实这无论id2是否包含空值,使用count(id2)均会使用全表扫描,因此即使语义上使用count(id2)和前三个SQL一致,这种执行计划的效率也是最低的,这张测试表的字段设置和数据量不很夸张,因此不很明显...总结: 11g下,通过实验结论,说明了count()、count(1)和count(主键索引字段)其实都是执行的count(),而且会选择索引的FFS扫描方式,count(包含空值的列)这种方式一方面会使用全表扫描...,另一方面不会统计空值,因此有可能和业务上的需求就会有冲突,因此使用count统计总量的时候,要根据实际业务需求,来选择合适的方法,避免语义不同。

4.7K30
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    如何在 SQL 中查找重复值? GROUP BY 和 HAVING 查询示例教程

    如果您想知道如何在表中查找重复值,那么您可以在 SQL 中使用 GROUP BY 和 HAVING 子句。 使用 group by 您可以创建组,如果您的组有超过 1 个元素,则意味着它是重复的。...您需要编写一个查询来查找所有重复值。...使用 GROUP BY 查找重复元素 这个问题最简单的解决方案是使用 GROUP BY 和 HAVING 子句。...这是查找重复电子邮件的 SQL 查询: SELECT Email FROM Person GROUP BY Email HAVING COUNT(Email) > 1 使用self-join在列中查找重复值...= p1.Id ) 总结 这就是如何使用 GROUP BY 和 HAVING 子句在 SQL 中查找重复项的全部内容。 我还向您展示了如何使用自联接和带有 EXISTS 子句的子查询来解决这个问题。

    18.3K10

    mongodb_学习笔记

    {},{_id:0,name:1}) mongodb的比较运算符(大于,小于等于等),范围运算符(in,not in),逻辑运算符(and ,or) 大于,大于等于 gt,get lt,lte 小于...{$gt:18}}) 返回数组 聚合操作的分组和计数如何使用,如何修改输出数据的样式, 分组 db.collection.aggregate({group:{_id:" project db.collection.aggregate...:true}, {group:{_id:"age",count:{project:{_id:0,age:" 练习 db.tv1.aggregate( {$project:{title:1,_id:0...group:{_id:"$country",count:{$sum:1}}}, {$project:{_id:0,country:"$_id",count:1}} ) mongodb mysql...redis的区别和使用场景 mysql是关系型数据库,支持事物 mongodb,redis非关系型数据库,不支持事物 mysql,mongodb,redis的使用根据如何方便进行选择 希望速度快的时候

    2.5K20

    MongoDB

    MongoDB 文档类似于 JSON 对象。字段值可以包含其他文档,数组及文档数组。...文档中的值不仅可以是在双引号里面的字符串,还可以是其他几种数据类型(甚至可以是整个嵌入的文档)。 MongoDB 区分类型和大小写。 MongoDB 的文档不能有重复的键。 文档的键是字符串。...用于存储布尔值(真/假)。 Double 双精度浮点值。用于存储浮点值。 Min/Max keys 将一个值与 BSON(二进制的 JSON)元素的最低值和最高值相对比。...有点类似 sql 语句中的 count(*) 准备数据 db.article.insert({ title: 'MongoDB Overview', description: 'MongoDB...([{$group : {_id : “$by_user”, num_tutorial : {$avg : “$likes”}}}]) $min 获取集合中所有文档对应值得最小值。

    5.5K20

    act-morphia 1.7.2 带来不一样的数据聚合体验

    概述 Mongodb 2.2 开始就提供了数据Aggregation Pipeline (聚合管道)用于简单数据分析统计,包括计数(count),求和(sum),均值(average),标准差(stddev...atMost(Number) - 过滤聚合数据, 要求必须小于或等于给定参考值 greaterThan(Number) - 过滤聚合数据, 要求必须大于给定参考值 lessThan(Number) -...将聚合数据按数值大小升序排列 sorted(true) - 将聚合数据按数值大小降序排列 get() - 返回一个 AggregationResult 的对象, 数值类型为 Double...return dao.q("region", region).count(); // 也可以使用 MongoDB column 名字来构造查询: // return dao.q("reg".../** * 一次性获得按地区分组统计订单数量的聚合结果 * * 返回的 Map key 为地区, value 为该地区的订单数量 */ @GetAction("/regions/~group-count

    1.7K20

    Spring认证中国教育管理中心-Spring Data MongoDB教程七

    为此,我们需要创建一个初始文档,其中包含我们的 count 变量和一个 reduce 函数,每次遇到它时都会增加它。...使用该group操作tags为我们聚合出现计数的每个值定义一个组(通过使用count聚合运算符并将结果收集在名为 的新字段中n)。...请注意,对state和的排序city是针对组 ID 字段(Spring Data MongoDB 处理的)隐式执行的。 group再次使用操作将中间结果分组state。...我们在操作中分别选择调用last(…)和first(…)运算符的最大和最小城市的名称和人口计数project。 state从上一个group操作中选择字段。...当 SpEL 表达式转换为 MongoDB 聚合框架表达式时,外部参数表达式将替换为其各自的值。

    9.5K30
    领券