当前位置: 首页 > news >正文

【MongoDB】索引

目录

一、概述

二、索引的类型

1、单字段索引

2、复合索引

3、其他索引

三、索引的管理

1、索引的创建

2、索引的查看

3、索引的删除

四、索引的使用

1、执行计划

2、涵盖的查询


一、概述

索引支持在MongoDB中高效地执行查询。如果没有索引,MongoDB必须执行全集合扫描,也就是扫描集合中的每一个文档,以选择与查询语句匹配的文档。这种扫描全集和的查询效率是非常低的,特别是在处理大量的数据时,查询可能要花费几十秒甚至几分钟,这对服务器的性能是非常致命的。如果查询存在适当的索引,就可以使用该索引限制必须检查的文档数。

索引是特殊的数据结构,他以易于遍历的形式存储集合数据集的一小部分。索引存储特点的字段或一组字段的值,按字段值排序。索引项的排序支持有效的相等匹配和基于范围的查询操作。此外,MongoDB还可以使用索引中的排序返回排序结果。

MongoDB索引使用的是B-Tree而MySQL是B+Tree

二、索引的类型

1、单字段索引

MongoDB支持在文档的单个字段上创建用户定义的升序/降序索引。称为单字段索引。对于单个字段索引和排序操作,索引键的排序顺序并不重要,因为MongoDB可以在任何方向上遍历索引。

image.png

 

2、复合索引

MongoDB还支持多个字段的用户定义索引,也就是复合索引

image.png

 

3、其他索引

image.png

三、索引的管理

1、索引的创建

db.collection.createIndex({userid:1)}  # 1表示升序 -1 表示降序

2、索引的查看

db.collection.getIndexes()

3、索引的删除

db.collection.dropIndex(name)  # 根据名称删除

四、索引的使用

1、执行计划

分析查询的性能通常使用执行计划来查看查询执行的情况,如查询消耗的时间、是否基于索引查询

db.collection.find(query.options).explain(options)

2、涵盖的查询

当查询条件和查询的投影仅包含索引字段时,MongoDB直接从索引返回结果,而不扫描任何文档或将文档带入内存。这些覆盖的查询可以非常有效。

http://www.lryc.cn/news/122268.html

相关文章:

  • 机器人CPP编程基础-02变量Variables
  • 【学会动态规划】买卖股票的最佳时机 IV(18)
  • 请解释一下CSS中的rem和em单位有什么不同,分别如何使用?
  • docker 导入镜像 REPOSITORY和tag都是null怎么解决
  • c语言操作符
  • python爬虫5:requests库-案例3
  • uni-app:实现点击按钮,进行数据累加展示(解决数据过多,导致出错)
  • 群晖6.X便捷的安装cpolar内网穿透
  • ffmpeg 4.4版本对MP4文件进行AES-CTR加密,和流式加密
  • 软件测试基础篇——Docker
  • MySQL刷题遇到的盲点(五)窗口函数
  • 【java】基础——多态
  • Go语言使用cron/v3实现定时任务
  • photoshop PS 查看像素坐标、像素颜色、像素HSB颜色
  • SpringCloud实用篇3----Docker
  • 使用阿里云服务器搭建Discuz论坛网站教程基于CentOS系统
  • gitee(码云)如何生成并添加公钥配置用户信息
  • C++QT教程3——手册4.11.1自带教程(笔记)——创建一个QT快速应用
  • 用友时空KSOA SQL注入漏洞复现(HW0day)
  • java中编写代码:如何以sftp的形式把文件从服务器上面下载下来?(有账号和密码)
  • 【24择校指南】南京大学计算机考研考情分析
  • IL汇编 ldarg 指令学习
  • 【ARM Cache 系列文章 9 番外篇 -- ARMv9 系列 Core 介绍】
  • 章节7:Burp Intruder模块
  • vue pc端项目el-upload上传图片时加水印
  • ubuntu中redis+mysql安装使用
  • 若依-plus-vue启动显示Redis连接错误
  • 【C++11智能指针】
  • 如何实现Excel中多级数据联动
  • 使用Pytest集成Allure生成漂亮的图形测试报告