zoukankan      html  css  js  c++  java
  • mongodb索引

    1.【普通单列索引】
    先创建20W条数据,测试查询性能
    for(var i=0;i<200000;i++){
    db.java.insert({"name":"xiao"+i,"age":i})
    }
    var start = new Date()
    db.java(集合名).find({"name":"xiao186789"})
    var end = new Date()
    end-start
    为字段"name"创建索引
    db.java(集合名).ensureIndex({"name":1})【1:升序,-1:降序】

    2.【多列索引,复合索引】
    db.java(集合名).ensureIndex({"name":1,"age":-1})

    3.【子文档索引】
    {name:手机,price:12.6,spc:{weight:100,desc:phone}}
    db.java(集合名).ensureIndex({"spc.weight":1})

    4.【唯一索引】
    db.java(集合名).ensureIndex({name:1},{unique:true})

    5.【查看索引】
    db.java(集合名).getIndexes()
    db.java(集合名).find().explain("executionStats")
    主要关注:executionTimeMillis的值(单位:毫秒)

    6.【删除索引】
    删除单个
    db.java(集合名).dropIndex({name:1})
    删除所有
    db.java(集合名).dropIndexes()
    注意:在删除所有的索引时,主键索引会保留

    7.【重建索引】
    一个表经过很多次修改后,导致表的文件产生空洞,索引文件也如此。
    可以通过索引的重建,减少索引文件碎片,并提高索引的效率。
    类似mysql中的optimize table
    mysql里面使用optimize table 语法:optimize table 表名
    语法:db.java(集合名).reIndex()

    8.【索引使用注意事项】
    (1)索引的创建在提高查询性能的同时会影响插入性能,对于多读少写的文档可以考虑使用索引
    (2)复合索引要注意索引的先后顺序
    (3)每个key都建立索引不一定就能提高性能,索引不是万能的
    (4)在做排序工作的时候如果是超大数据量,也可以考虑加上索引用来提高排序的性能

  • 相关阅读:
    漫步温泉大道有感
    不可多得的”魔戒“:一堂成功学大师们的浓缩课
    四川新闻网关于IT诗人的报道
    赠徐蕴筝(帮别人名字作诗)
    再游草堂
    赠申芳菲(帮别人名字作诗)
    Oracle内部错误:ORA00600[15801], [1]一例
    Oracle内部错误:ORA00600[OSDEP_INTERNAL]一例
    Oracle O立方服务平台(O3SP)
    Oracle RAC内部错误:ORA00600[keltnfyldmInit]一例
  • 原文地址:https://www.cnblogs.com/myJuly/p/14548131.html
Copyright © 2011-2022 走看看