首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

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

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

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

    Mongo散记–聚合(aggregation)& 查询(Query)

    mongo官网:http://www.mongodb.org/ 工作中使用到Mongo,可是没有系统的学习研究过Mongo,仅对工作过程中,在Mongo的使用过程中的一些知识点做一下记录,并随时补充,达到总结备忘的目的...() db.view_view.find({_id:”521842″}).count() Distinct db.view_view.distinct(“_id”) db.view_view.distinct...(“view”) view是个数组,会把每一个数组的元素都distinct一下 Group db.invoke_stat.group({ key:{ip:true}, cond:{...cond:是要过滤的查询条件 reduce:处理函数 initial:返回列的初始值 finalize:对reduce的结果进行进一步处理,比方格式化 MapReduce db.invoke_stat.mapReduce...,但会影响性能;採用javascript对象,性能较高,但仅仅能传递50万个不同的key值; verbos布尔,默认true,显示具体的时间统计信息。

    2.5K20

    MongoDB简易教程mongo简介及应用场景安装和使用mongodbPHP中操作mongo数据库python中操作mongo数据库

    (Redis包含了其他功能) 图存储 Neo4JFlockDB 图形关系的最佳存储。使用传统关系数据库来解决的话性能低下,而且设计使用不方便。...{key:{$exist:1}} //取出key列存在的值。...//直接用where语句,二进制转为JS运算,较慢 find()方法增强 db.collection.find(query,{要取出的列:1,不需要的列:0}) db.collection.find...db.collection.remove(query,[justone]) //如不指定query,全部删除;[justone]默认为false意思是查询到多个,但只删一个。...update语句 db.collection.update(query,{key:newvalue}) //注意:新值会覆盖旧值,即数据只剩下语句中定义的key db.collection.update

    1.5K60

    详解MongoDB管理命令

    MongoDB是一个NoSQL数据库系统:一个数据库可以包含多个集合(Collection),每个集合对应于关系数据库中的表;而每个集合中可以存储一组由列标识的记录,列是可以自由定义的,非常灵活,由一组列标识的实体的集合对应于关系数据库表中的行...().help() - show DBCursor help      db.mycoll.count()      db.mycoll.dataSize()      db.mycoll.distinct...( key ) - eg. db.mycoll.distinct( 'x' )      db.mycoll.drop() drop the collection      db.mycoll.dropIndex...,使用save会将原来的记录值进行覆盖实现记录更新。...实现远程连接 当你已经连接到一个远程的MongoDB数据库服务器(例如,通过mongo连接到192.168.0.184),现在想要在这个会话中连接另一个远程的数据库服务器(192.168.0.197),

    2K20

    mongodb概述 二以及和 mysql的比较

    键用于唯一标识一个文档,为字符串类型,而值则可以是各中复杂的文件类型; u  *模式自由:存储在mongodb数据库中的文件,我们不需要知道它的任何结构定义; u  *支持完全索引,包含内部对象。...因为Mongo已经包含对MapReduce引擎的内置支持。 u  Mongo的BSON数据格式非常适合文档化格式的存储及查询。...u  ◆高伸缩性的场景:Mongo非常适合由数十或数百台服务器组成的数据库。Mongo的路线图中已经包含对MapReduce引擎的内置支持。...由于日志的不可更新性的,往往只需APPEND即可,又因为对日志的操作往往只集中于一两列,所以最合适作为日志分析的还是列存储型的数据库,特别是像infobright那样的为数据仓库而设计的列存储数据库。...IDdesc db.test.distinct('name',{'ID':{$lt:20}})  select distinct(name) from testwhere ID<20 db.test.group

    2.5K10

    MongoDB权威指南学习笔记(3)--复制和分片

    db.runCommand({ "getLastError":1, "w":"majority" }) 可以指定wtimeout的值设置超时时间,如果这个超过这个时间还没有返回,就会返回失败...几乎所有数据库都能进行手动分片,但mongo支持自动分片,可以使数据库架构对应用程序不可见,也可以简化系统管理。对应用来说,和使用单机mongo服务器一样。...创建散列片键,首先要创建散列索引 db.users.ensureIndex({ "username":"hashed" }) 然后对集合分片 db.shardCollection("app.users...",{ "username":"hashed" }) 局限性: 不能使用enique选项 不能使用数组字段 浮点型的值会先呗取整,然后才会进入散列,所有1和1.99999会得到相同的散列值...GridFS的散列片段 GridFS集合通常非常适合做分片,因为它们包含大量的文件数据 在files_id字段上创建散列索引,则每个文件都会随机分发到集群中,但是一个文件只能呗包含在一个单一的块中,这时非常好的

    1.3K30

    MongoDB第四期:SQL 与 MongoDB 映射(入门)

    MongoDB对于关系型数据库里的表,但是集合中没有列、行和关系概念,这体现了模式自由的特点。...MongoDB对应的术语和概念: SQL MongoDB 数据库(database) 数据库(database) 表(table) 集合(collection) 行(row) 文档(document或BSON) 列(...索引(index) 表关联(table join) 内嵌文档和链接(embedded document和linking) 主键(primary key) 主键(primary key) 使用指定的唯一列或列的组合作为主键...SQL MongoDB 说明 mysqld mongod 服务器守护进程 mysql mongo 客户端工具 mysqldump mysqldump 逻辑备份工具 mysql mongorestore...: {'$gt': 30}}).count() 获取表记录数 select DISTINCT last_name from users db.users.distinct('last_name') 去掉重复值

    1.3K20

    mongoDB的安装及基本使用

    NoSQL数据库:Not only sql,指代非关系型数据库 优点:高可扩展性、分布式计算、低成本、灵活架构、半结构化数据、简化关联关系 缺点:没有标准化、有限查询、不直观 常见NoSQL数据库 列存储...ObjectID:文档id String:字符串 Boolean:布尔值 Integer:整数 Double:浮点数 Arrays:数组或者列表 Object:嵌入的文档 Null:空值 Timestamp...- 在cmd窗口输入命令启动数据库 mongod --dbpath D:\软件安装\MongoDB\data\db(此处是db的路径) 打开一个新的窗口输入命令mongo,用于数据库操作 2.2.Linux...({$or:[{age:{$gt:18}, {gender:”女”}]}) 范围运算符 $in:判断指定条件是否包含在某个范围内 $nin:判断指定条件是否不包含在某个范围内 #查询年龄在18或者20....distinct(“去重域名称”, {条件}) 查询数据列表中,所有的年龄分布情况 db.student.distinct(“age”, {}) 分页 #隔n个数据查询m个数据 db.hero.find

    1.5K20

    使用MongoDB构建数据库集群

    分片- 分片只是一个包含部分数据的数据库服务器。数据库中的项目通过范围或散列分割为分片,我们将在本指南的后面部分进行说明。为简单起见,我们将在示例中使用两个单服务器分片。...将“密码”替换为您选择的强密码: db.createUser({user: "mongo-admin", pwd: "password", roles:[{role: "root", db: "admin...两种最常见的分片策略是基于范围和基于散列的。 基于范围的分片根据分片键中的特定值范围划分数据。例如,您可能拥有一组客户和相关地址。如果使用基于范围的分片,则邮政编码可能是分片键的不错选择。...另一个需要考虑的重要因素是,您将运行哪种查询。当应用程序将执行许多复杂的读查询时, 在适当使用时, 基于范围的分片通常是更好的选择。...为简单起见,我们将使用基于散列的分片策略。 注意并不总是需要对数据库中的每个集合进行分片。根据每个集合包含的数据,将某些集合存储在一个位置可能更有效,因为对单个分片的数据库查询更快。

    2.4K30
    领券