【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.rhkb.cn/news/85515.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

爬虫与搜索引擎优化:通过Python爬虫提升网站搜索排名

作为一名专业的爬虫程序员,我深知网站的搜索排名对于业务的重要性。在如今竞争激烈的网络世界中,如何让自己的网站在搜索引擎结果中脱颖而出,成为关键。今天,和大家分享一些关于如何通过Python爬虫来提升网站的搜索排名的技巧和实…

了解Swarm 集群管理

Swarm 集群管理 简介 Docker Swarm 是 Docker 的集群管理工具。它将 Docker 主机池转变为单个虚拟 Docker 主机。 Docker Swarm 提供了标准的 Docker API,所有任何已经与 Docker 守护程序通信的工具都可以使用 Swarm 轻松地扩展到多个主机。 支持的工具包括但不限…

(学习笔记-进程管理)多线程冲突如何解决

对于共享资源,如果没有上锁,在多线程的环境里,很有可能发生翻车。 竞争与合作 在单核 CPU 系统里,为了实现多个程序同时运行的假象,操作系统通常以时间片调度的方式,让每个进程每次执行一个时间片&#xf…

软件测试面试时一些不能说的离职原因

“你为什么从上一家公司离职?”这个问题在面试时基本都会被问到,这是无法避免的问题。那么什么样的理由才能做到既反映实际情况,又能得到HR认可呢?以下的几种回答千万不能脱口而出。 1、毫无顾忌地说前公司的坏话 1)…

首发!Tiktok直播海外公会入驻及解析!

TikTok平台在全球拥有将近30亿的用户使用,流量非常大的同时,市场却是一片空白,对于想进入TK直播公会和已经进入到的人来说,完全申请cmxyci是一片蓝海,现在入局还不晚! 目前开放国家有日本、英国、中国台湾…

【二】数据库系统

数据库系统的分层抽象DBMS 数据的三个层次从 数据 到 数据的结构----模式数据库系统的三级模式(三级视图)数据库系统的两层映像数据库系统的两个独立性数据库系统的标准结构 数据模型从 模式 到 模式的结构----数据模型三大经典数据模型 数据库的演变与发…

【JavaSE】方法的使用

方法详解 方法概念及使用方法定义方法调用的执行过程实参和形参的关系 方法重载为什么需要方法重载方法重载概念方法签名 递归生活中的故事递归的概念递归执行过程分析递归练习 方法概念及使用 什么是方法(method) 方法就是一个代码片段. 类似于 C 语言中的 “函数”。 方法存…

【C++手撕系列】——设计日期类实现日期计算器

【C手撕系列】——设计日期类实现日期计算器😎 前言🙌C嘎嘎类中六大护法实现代码:获取每一个月天数的函数源码分享构造函数源码分享拷贝构造函数源码分享析构函数源码分享赋值运算符重载函数源码分享取地址和const取地址运算符重载函数源码分…

远程RDP、远控手机、双屏控双屏,向日葵“瓜子会员”妥妥的真香

最近儿有点“小感冒”,没去公司在家歇着,居家归居家,砖还是要搬的,突然来活了也得及时的处理掉,这种时候我一般用远程桌面的方式,之前就一直用的向日葵远程控制。 为啥用远程桌面呢?主要原因是家…

CAD绘制法兰、添加光源、材质并渲染

首先绘制两个圆柱体,相互嵌套 在顶部继续绘制圆柱体,这是之后要挖掉的部分 在中央位置绘制正方形 用圆角工具: 将矩形的四个角分别处理,效果: 用拉伸工具 向上拉伸到和之前绘制的圆柱体高度齐平 绘制一个圆柱体&#…

以太网ICMP协议(九)

目录 一、概述 二、ICMP消息类型 2.1 ICMP类型0和类型8:Ping功能 2.2 ICMP类型3:目标不可达 2.3 ICMP类型5:重定向 2.4 ICMP类型11:超时 三、报文格式 一、概述 由于IP协议是不可靠的通信协议,需要有其他协议的…

Python:Spider爬虫工程化入门到进阶(2)使用Spider Admin Pro管理scrapy爬虫项目

Python:Spider爬虫工程化入门到进阶系列: Python:Spider爬虫工程化入门到进阶(1)创建Scrapy爬虫项目Python:Spider爬虫工程化入门到进阶(2)使用Spider Admin Pro管理scrapy爬虫项目 目录 1、使…

MacBook触控板窗口管理 Swish for Mac

Swish for Mac是一款用于通过手势来控制mac应用窗口的软件,你可以通过这款软件在触控板上进行手势控制,你可以在使用前预设好不同手势的功能,然后就能直接通过这些手势让窗口按照你想要的方式进行变动了 Swish 支持 Haptick Feedback 震动反…

用excel格式书写的接口用例执行脚本

创建测试用例和测试结果集文件夹: excel编写的接口测试用例如下: 1 encoding 响应的编码格式。所测项目大部分是utf-8,有一个特殊项目是utf-8-sig 2 params 对应requests的params 3 data,对应requests的data 有些参数是动态的&a…

安卓中常见的字节码指令介绍

问题背景 安卓开发过程中,经常要通过看一些java代码对应的字节码,来了解java代码编译后的运行机制,本文将通过一个简单的demo介绍一些基本的字节码指令。 问题分析 比如以下代码: public class test {public static void main…

SpringCloud源码探析(九)- Sentinel概念及使用

1.概述 在微服务的依赖调用中,若被调用方出现故障,出于自我保护的目的,调用方会主动停止调用,并根据业务需要进行对应处理,这种方式叫做熔断,是微服务的一种保护方式。为了保证服务的高可用性,…

IntelliJ IDEA 2021/2022关闭双击shift全局搜索

我这里演示的是修改,删除是右键的时候选择Remove就好了 IDEA左上角 File-->Settings 找到Navigate -->Search Everywhere ,右键添加快捷键。 OK --> Apply应用

GPT-3.5 人工智能还是人工智障?——西红柿炒钢丝球!!

人工智能还是人工智障?——西红柿炒钢丝球 西红柿炒钢丝球的 基本信息西红柿炒钢丝球的 详细制作方法材料步骤 备注幕后花絮。。。。。。。。。关于GPT-3.5,你的看法: 西红柿炒钢丝球的 基本信息 西红柿炒钢丝球是一道具有悠久历史的传统中式…

构建高性能的MongoDB数据迁移工具:Java的开发实践

随着大数据时代的到来,数据迁移成为许多企业和组织必须面对的挑战之一。作为一种非关系型数据库,MongoDB在应用开发中得到了广泛的应用。为了满足数据迁移的需求,我们需要一个高性能、稳定可靠的MongoDB数据迁移工具。下面将分享使用Java开发…