• MongoDB索引


    1、查看索引
      查看数据库使用到的所有索引
      db.system.indexes.find()
      db.system.spacename.find()

      查看指定文档使用的索引
      db.collection.getIndexes();

    2、创建索引
      创建普通的单列索引
      db.collection.ensureIndex({field:1/-1}); 1是升续 2是降续
      为集合persons中的age字段添加索引
      db.persons.ensureIndex({age:1}); //正序索引
      db.persons.ensureIndex({age:-1}); //倒序索引

      创建多列索引
      db.collection.ensureIndex({field1:1/-1, field2:1/-1}); //以field1和field2的值作为索引,区别于分别以field1和field2建立索引

      创建子文档索引
      db.collection.ensureIndex({filed.subfield:1/-1});

      创建索引时指定索引名称
      db.persons.ensureIndex({age:1},{name:'agesort'}); //以age字段建立索引,索引名为agesort

      建立唯一索引
      db.collection.ensureIndex({filed:1/-1}, {unique:true});
      db.persons.ensureIndex({name:1},{unique:true})

      如果要使用某个字段建立唯一索引,但是该字段在集合中已经存在重复值,则针对该字段
      建立唯一索引会失败,但是可以剔除重复值建立唯一索引
      db.persons.ensureIndex({name:1},{unique:true,dropDups:true})
      这样以name字段建立唯一索引,如果出现重复值就以留下第一个,剔除其余重复值对应的文档记录

      创建稀疏索引:
      稀疏索引的特点------如果针对field做索引,针对不含field列的文档,将不建立索引.
      与之相对,普通索引,会把该文档的field列的值认为NULL,并建索引.
      适宜于: 小部分文档含有某列时.
      db.collection.ensureIndex({field:1/-1},{sparse:true});

      创建哈希索引(2.4新增的)
      哈希索引速度比普通索引快,但是,无能对范围查询进行优化.
      适宜于---随机性强的散列
      db.collection.ensureIndex({file:’hashed’});

    3、删除索引

       删除单个索引

      db.collection.dropIndex({filed:1/-1});

      

      删除文档所有索引

      db.collection.dropIndexes();

      db.runCommand({dropIndexes:'persons',index:'name'}) //删除persons集合中名称为name的索引
      db.runCommand({dropIndexes:'persons',index:'*'}) //删除person集合中所有索引

    4、重建索引
      db.collection.reIndex() 可减少索引文件碎片

      查询时强制使用指定索引(该索引必须已经被建立,存在)
      db.persons.find({age:25}).hint({name:1}) 查询年龄为25岁的人,并使用索引name


    5、查看当前查询语句的具体信息
      db.persons.find({name:"zhangsan"}).explain()
      可以看到该查询语句使用到了那些索引,消耗时间等信息


      由于创建索引时,系统会暂时锁表,为了不影响增删改查的性能,可以让创建索引的过程在后台执行
      db.persons.ensureIndex({name:1},{background:true})

  • 相关阅读:
    jquery异步加载json格式的数据
    三角形及选中取消按钮的css代码
    css实现自适应宽度布局
    table表格中实现tbody部分可滚动,且thead部分固定
    table数据表格添加checkbox进行数据进行两个表格左右移动。
    对checkbox 的checked的一些总结
    Java多线程同步器
    Springboot动态获取bean对象工具类
    并发阻塞队列和非阻塞队列详解
    多线程-volatile关键字和ThreadLocal详解
  • 原文地址:https://www.cnblogs.com/iaknehc/p/6682481.html
Copyright © 2020-2023  润新知