说到索引,大家肯定都在关系型数据库或多或少接触过,它的主要目的是加速查询的速度。MongoDB作为一种数据库,当然也提供了索引的操作。

我们先插入1万条测试数据。

首先,我们先来看看不加索引查找name为"p10000"的文档的执行计划,使用explain()函数。

这里注意一点,MongoDB 3.0开始之后的版本使用explain() 需要填写参数,"queryPlanner","executionStats","allPlansExecution",如果不添加参数,默认为"queryPlanner"。

所以,我们要查看查询花费的时间,需要加上参数"executionStats"。

executionTimeMillis:  执行花费了4毫秒。

taotalDocsExamined:  扫描了10000个文档。

先不做评论。看看之后加上索引会是什么结果。

> 索引命令(ensureIndex)

下面为name字段加上索引。

我们来看下加上索引后的执行计划。

executionTimeMillis:  执行花费了0毫秒。

taotalDocsExamined:  扫描了1个文档。

对比一下没加索引之前的执行计划,可以看到两者速度相差不是一点点。

> 索引名称

手动指定唯一性的索引名称是很有必要的,这也方便我们后期对索引进行维护。

下面我们还是对name建立索引,并且命名为"product_name_index"。

这里用到getIndexes()命令来查看集合中有哪些索引,我们看到刚刚创建的名为"product_name_index"的索引包含在列。

> 唯一索引

唯一索引,保证指定键在每一个文档中的值都是唯一的。创建唯一索引需要用到ensureIndex第二个参数,我们看下实例。

我们看到创建了唯一索引后,向集合里插入name为"p10000"的文档,插入失败,提示索引中的键值重复。

> 删除索引(dropIndex)

我们都知道索引能提高查询的效率,但是却会影响插入更新等操作的性能,所以有时候我们会根据业务的需要,实时的维护,删除不必要的索引。

 

有关索引的基本知识就介绍到这里,下一篇学习一下关于安全认证方面的知识。

转载于:https://www.cnblogs.com/mejoy/p/6008381.html

MongoDB学习总结(四) —— 索引的基本用法相关推荐

  1. mongo备份索引_【MongoDB学习之四】索引 聚合 备份与恢复 监控

    环境 MongoDB 4.0 CentOS 6.5_x64 一.索引 语法 ensureIndex()方法基本语法格式如下所示: >db.COLLECTION_NAME.ensureIndex( ...

  2. Python学习(四)cPickle的用法

    python中有两个类似的:pickle与cPickle:两者的关系:"cPickle – A faster pickle" pickle模块中的两个主要函数是dump()和loa ...

  3. MongoDB 学习笔记四 C#调用MongoDB

    网址:http://blog.csdn.net/xundh/article/details/49449467 驱动 下载  https://github.com/mongodb/mongo-cshar ...

  4. MongoDB学习笔记(一) MongoDB介绍及安装

    系列目录 MongoDB学习笔记(一) MongoDB介绍及安装     MongoDB学习笔记(二) 通过samus驱动实现基本数据操作     MongoDB学习笔记(三) 在MVC模式下通过Jq ...

  5. MongoDB学习笔记(四)--索引 性能优化

    索引                                                                                             基础索引 ...

  6. MongoDB学习系列 -- 索引

    百度百科上对于索引的定义大概是这样的:在关系数据库中,索引是一种单独的.物理的对数据库表中一列或多列的值进行排序的一种存储结构,它是某个表中一列或若干列值的集合和相应的指向表中物理标识这些值的数据页的 ...

  7. MongoDB学习笔记(四)使用Java进行实时监控与数据收集(空间使用量、连接数)

    目录: MongoDB学习笔记(一)环境搭建与常用操作 MongoDB学习笔记(二)使用Java操作MongoDB MongoDB学习笔记(三)使用Spring Data操作MongoDB Mongo ...

  8. mysql text 查询速度_数据库学习之让索引加快查询速度(四)

    数据库学习之让索引加快查询速度 目录 索引简介 mysql的索引分类 创建索引 添加与删除索引 索引简介 索引在MySQL中也叫做"键",是存储引擎用于快速找到记录的一种数据结构. ...

  9. MongoDB学习笔记(一)简介+安装+基本CRUD+索引

    思维导图 文章目录 思维导图 1. MongoDB相关概念 1.1 业务应用场景 1.1.1 三高需求 1.1.2 何时选择MongoDB 1.2 MongoDB简介 1.3 体系结构 1.4 数据模 ...

最新文章

  1. java 初始化系统参数_系统中参数的初始化 参数在系统中配置
  2. python正则匹配_Python正则表达式初识(五)
  3. Android Handler原理
  4. C++ 如何判断所调用的重载函数
  5. 订单操作-分页查询所有订单
  6. Caddy Web服务器QUIC部署
  7. Hadoop2异常分析(一):hdfs移动数据至 hive,为什么原数据没有了?
  8. 大数据项目交付国标_在紧迫的期限内交付大型项目
  9. python多级索引修改
  10. TikZ学习笔记(三)图形的标记与交点
  11. [jQuery] ajax跨域处理方式
  12. 第二十二周微职位puppet
  13. JavaWeb03-HTML篇笔记(二)
  14. 阜阳市计算机学校助学金申请书,计算机*学生助学金申请书
  15. 判断一个整数能否同时被3和5整除
  16. excle2010 一张图上画两种类型的图:折线图+柱形图
  17. 二维小波变换_小波变换完美通俗讲解系列之 (一)
  18. C语言 收入与纳税计算
  19. Clickhouse 分布式子查询——global in/join(慎用慎用)
  20. enq:TM-contention

热门文章

  1. 首位登月宇航员阿姆斯特朗去世 享年82岁
  2. 计算机的启动方式(冷启动、热启动、复位启动)、注销、待机
  3. 谈谈写论文的重要性,以及,如何写论文更容易被审稿人接受?
  4. 手机led显示屏控制软件大全,手机led显示屏控制软件哪个好?
  5. swiftly语言学习2
  6. ZigBee协议介绍
  7. 最美人间四月天,换季衣物洗护指南来啦!
  8. 基础类型(Primitives)与封装类型(Wrappers)的区别
  9. 单片机程序c语言 汇编语言,C语言能够实现单片机功能,为什么还要使用汇编呢?...
  10. STM32外设寄存器地址定义