MongoDB建立索引与explain命令

一句话概括索引: 添加索引能加快查找速度。

MongoDB的索引几乎与传统关系型数据库索引一模一样。(自我觉得建立起来非常简单)

1.建立索引:

    db.user.ensureIndex( { "uname": 1 } )

    对 user 集合(collection)的 uname  列  建立索引。

2.获取当前集合的所有索引

     db.user.getIndexes()

    注意一下: 后面 是  es

3. 删除已有索引

     db.user.dropIndex({ "uname":1 }) 

     删除user集合的uname列的索引

4.建立复合索引。

     db.user.ensureIndex({  "uname":1,"age":-1 })

     注意:数字 1 表示 uname 键的索引按升序存储,-1 表示age 键的索引按照降序方式存储。

     该索引被创建后,基于 uname 和 age 的查询将会用到该索引,或者是基于 username 的查询也会用到该索引,但是只是基于 age 的查询将不会用到该复合索引。因此可以说, 如果想用到复合索引,必须在查询条件中包含复合索引中的前 N 个索引列。然而如果查询条件中的键值顺序和复合索引中的创建顺序不一致的话,MongoDB 可以智能的帮助我们调整该顺序,以便使复合索引可以为查询所用

5.建立唯一索引。

    db.user.ensureIndex({"userid":1},{"unique":true})

如果再次插入 userid 重复的文档时,MongoDB 将报错,以提示插入重复键,如

db.user.insert({"userid":5})

db.user.insert({"userid":5})

E11000 duplicate key error index: user.user.$userid_1 dup key: { : 5.0 }

6、索引的一些参数

如果在为已有数据的文档创建索引时,可以执行下面的命令,以使 MongoDB 在后台创建索引,这样的创建时就不会阻塞其他操作。但是相比而言,以阻塞方式创建索引,会使整个创建过程效率更高,但是在创建时 MongoDB 将无法接收其他的操作

7.使用explain

explain 是非常有用的工具,会帮助你获得查询方面诸多有用的信息。只要对游标调用该方法,就可以得到查询细节。explain 会返回一个文档,而不是游标本身。

explain executionStats 查询具体的执行时间:

  db.tablename.find().explain( "executionStats" )

  关注输出的如下数值:explain.executionStats.executionTimeMillis

猜你喜欢

转载自blog.csdn.net/weixin_37823121/article/details/82392371
今日推荐