美文网首页
03_mongoDB索引

03_mongoDB索引

作者: 对方不想理你并向你抛出一个异常 | 来源:发表于2017-08-30 15:53 被阅读0次

    索引

    索引就是用来加速查询的。数据库索引与书籍的索引类似:有了索引就不需要翻遍整本书,数据库则可以直接在索引中查找,使得查找速度能提高几个数量级。在索引中找到条目以后,就可以直接跳转到目标文档的位置。

    • 创建普通索引,使用命令 db.collection.ensureIndex({key:1})
    • 查看关于索引的相关信息,使用命令 db.collection.stats()
    • 查看查询使用索引的情况,使用命令 db.collection.find({key:value}).explain()
    • 删除索引,使用命令 db.collection.dropIndex({key:1})
    • 删除集合,也会将集合中的索引全部删除
    • 创建唯一索引,使用命令 db.collection.ensureIndex({key:1},{unique:true})
    • 查看关于索引的相关信息,使用命令 db.collection.stats()
    • 查看查询使用索引的情况,使用命令 db.collection.find({key:value}).explain()
    • 删除索引,使用命令 db.collection.dropIndex({key:1})
    • 删除集合,也会将集合中的索引全部删除

    创建简单索引

        数据准备index.js
    
    for(var i = 0 ; i<200000 ;i++){
        db.books.insert({number:i,name:i+"book"})
    }
    
    • 先检验一下查询性能
    var start = new Date()
    db.books.find({number:65871})
    var end = new Date()
    end - start
    
    • 为number 创建索引
      db.books.ensureIndex({number:1})
    • 再执行第一部的代码可以看出有数量级的性能提升

    索引使用需要注意的地方

    1. 创建索引的时候注意1是正序创建索引-1是倒序创建索引
    2. 索引的创建在提高查询性能的同事会影响插入的性能
      对于经常查询少插入的文档可以考虑用索引
    3. 符合索引要注意索引的先后顺序
    4. 每个键全建立索引不一定就能提高性能呢
      索引不是万能的
    5. 在做排序工作的时候如果是超大数据量也可以考虑加上索引
      用来提高排序的性能

    相关文章

      网友评论

          本文标题:03_mongoDB索引

          本文链接:https://www.haomeiwen.com/subject/kxyidxtx.html