zoukankan      html  css  js  c++  java
  • MongoDB学习总结(四) —— 索引的基本用法

      说到索引,大家肯定都在关系型数据库或多或少接触过,它的主要目的是加速查询的速度。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)

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

     

     

     

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

     

     

  • 相关阅读:
    一条语句简单解决“每个Y的最新X”的SQL经典问题
    SqlServer数据库字典--表.视图.函数.存储过程.触发器.主键.外键.约束.规则.sql
    SqlServer数据库字典--索引.sql
    SqlServer2005或2008数据库字典--表结构.sql
    SqlServer2000数据库字典--表结构.sql
    sqlserver附加 mdf、ldf的方法(手记)
    收缩数据库 DBCC SHRINKFILE
    日志、字段备注查询、自增ID联系设置、常用存储过程
    常用sql 全记录(添加中)
    python类的继承和多态,获取对象信息
  • 原文地址:https://www.cnblogs.com/mejoy/p/6008381.html
Copyright © 2011-2022 走看看