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

    索引

    索引是特殊的数据结构,存储在一个易于遍历读取的数据集合中,索引是对数据库表中一列或多列的值进行排序的一种结构,MongoDB 的索引存储在内存中,是B树结构

    • db.collection.createIndex(keys, options),使用createIndex() 方法创建索引

      • Key 值为要创建的索引字段,1 指定按升序创建索引,-1 指定降序

      # 创建索引:按k1升序
      db.collection.createIndex({"k1":1}})
      # 创建复合索引,按k2升序,k3降序
      db.collection.createIndex({"k2":1,"k3":-1}})
      • options 可选参数:

        • background,布尔值,建索引过程会阻塞其它数据库操作,background可指定以后台方式创建索引,即增加 "background" 可选参数。 "background" 默认值为false

        • unique,布尔值,建立的索引是否唯一。指定为true创建唯一索引。默认值为false.

        • name,字符串,索引的名称。如果未指定,MongoDB的通过连接索引的字段名和排序顺序生成一个索引名称

        • weights,索引权重值,数值在 1 到 99,999 之间,表示该索引相对于其他索引字段的得分权重

    • getIndexes(),查看索引

    • totalIndexSize(),查看索引大小

    • dropIndexes(<index_name>),删除索引,可以指定索引名称删除

    索引查询

    使用索引查询有两个条件

    • 所有查询字段是索引的一部分

    • 所有查询返回的字段在同一个索引中

    因为索引存在于RAM中,从索引中获取数据比通过扫描文档读取数据要快得多

    _id在查询中会默认返回,如果索引字段没有包含 _id 字段,注意查询条件要添加 "_id":0 ,使查询结果不包含 _id字段

    不能使用索引查询的情况:

    • 正则表达式及非操作符,如 $nin, $not, 等。

    • 算术运算符,如 $mod, 等。

    • $where 子句

    查询分析

    MongoDB 查询分析可以确保我们所建立的索引是否有效,是查询语句性能分析的重要工具

    MongoDB 查询分析常用函数有:explain() 和 hint()。

    • explain

    explain 操作提供了查询信息,使用索引及查询统计等。有利于我们对索引的优化

    db.collextion.find({...}).explain(),查询分析结果:

    1. indexOnly: 字段为 true ,表示使用了索引

    2. cursor:使用了索引是 BtreeCursor 类型的游标,没有使用索引时,游标的类型是 BasicCursor

    • hint

    可以使用 hint 来强制 MongoDB 使用一个指定的索引

  • 相关阅读:
    Java核心技术 卷一 笔记四 库类的直接使用
    Java核心技术 卷一 笔记三 大数值及数组
    Java核心技术 卷一 笔记2 字符串的复制
    Java核心技术 卷一 笔记1
    修改css 样式后, hover事件 不生效
    修改 element ui input 输入框 样式不生效问题
    css3 计算属性
    Vue3 改动系列
    浏览器实现,向下滑动 鼠标滚轮,页面横向移动
    linux ceont0s7 vue 打包压缩图片 一直报错
  • 原文地址:https://www.cnblogs.com/yjh1995/p/14164188.html
Copyright © 2011-2022 走看看