美文网首页
Mongodb学习笔记 (五) 之 索引

Mongodb学习笔记 (五) 之 索引

作者: 我的小鱼干去哪儿了 | 来源:发表于2019-01-15 22:15 被阅读0次

    索引

    • 索引提高查询速度,降低写入速度。权衡常用的查询字段,不必在太多列上建索引
    • 在mongo中,索引可以按字段升序/降序来创建,便于排序
    • 默认使用btree树来组织索引文件,2.4版本以后,也允许建立hash索引

    查看查询计划

    db.stu.find({sn:99}).explain()
    "cursor":"BasicCursor", -- 说明索引没有发挥作用
    "nscannedObjects":1000, -- 理论上要扫描多少行
    
    "cursor":"BtreeCursor sn_1", 用到的btree索引
    

    常用命令

    1. 查看当前索引状态

    db.stu.getIndexes()
    

    2. 创建普通的单列索引

    db.stu.ensureIndex({field:1/-1}) // 1 是升序,2是降序
    

    2. 创建多列索引

    db.stu.ensureIndex({field1:1/-1, field2:1/-1}) // 1 是升序,2是降序
    

    3. 删除单个索引

    db.stu.dropIndex({field:1/-1})
    

    4. 一下删除全部索引

    db.stu.dropIndexes()
    

    5. 创建子文档索引

    db.collection.ensureIndex({field.subfield:1/-1})
    

    6. 创建唯一索引

    db.stu.ensureIndex({field:1/-1},{unique:true})

    7. 创建稀疏索引

    稀疏索引的特点: 如果针对field做索引,针对不含field列的文档,则不建立索引
    与之相对,普通索引,会把该文档的field列当成NULL,并建索引。
    适宜于:小部分文档含有某列时.

    db.stu.ensureIndex({field:1/-1},{sparse:true}) 
    
    image.png

    8. 创建哈希索引(2.4新增的)

    哈希索引速度比普通索引快,但是,无法对范围查询进行优化
    适宜于--随机性强的散列
    db.collection.ensureIndex({field:'hashed'})

    9. 重建索引

    一个表经过很多次修改后,导致表的文件产生空洞,索引文件也如此
    可以通过索引文件的重建,减少索引文件的碎片,并提高索引的效率,类似mysql中的optimize table

    db.collection.reIndex()
    

    相关文章

      网友评论

          本文标题:Mongodb学习笔记 (五) 之 索引

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