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 使用一个指定的索引

  • 相关阅读:
    (Vue中)cehart在同一个dom上画图图切换时饼图有折线图的坐标系
    linux(centos7)修改服务器时间
    centos6 yum源不能使用
    Linux 使用 history 来减少重复命令的几个实用技巧。
    7个Shell 拿来就用脚本实例!
    keepalived的配置解析&安装与爬坑
    linux最全命令使用手册
    linux各种误删文件恢复方法(经典强推)
    位运算符
    SQL 书写、执行顺序
  • 原文地址:https://www.cnblogs.com/yjh1995/p/14164188.html
Copyright © 2011-2022 走看看