索引的概述和类型 | 学习笔记

简介: 快速学习 索引的概述和类型

开发者学堂课程【MongoDB精讲课程(上):索引的概述和类型学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/726/detail/12961


索引的概述和类型


内容介绍

一、概述

二、类型

 

一、概述

索引支持在 MongoDB 中高效地执行查询。如果没有索引,_ MongoDB 必须执行全集合扫描,即扫描集合中的每个文档,以选择与查词语句匹配的文档。这种扫描全集合的查询效率是非常低的,特别在处理大量的数据时,査询可能要花费十秒甚至几分钟,这对网站的性能是非常致命的。

如果查询存在适当的索引, MongoDB 可以使用该索引限制必须检查的文档数。

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

官网文档:https://docs.mongodb.com/manual/indexes/

了解: MongoDB 索引使用 B 树数据结构(确切的说是 BTree , MySQL B+Tree )

 

二、类型

1、单字段索引

MongoDB 支持在文档的单个字段上创建用户定义的升序/降序索引.称为单字段索引 ( Single Field Index )

对于单个字段索引和排序操作,索引键的排序顺序(即升序或降序)并不重要,因为  MongoDB 可以在任何方向上遍历索引。

image.png

2、复合索引

MongoDB 还支持多个字段的用户定义索引,即复合索引( Compound Index )。当查询条件较多,又想提升查询性能时,通常用复合索引。

复合索引中列出的字段顺序具有重要意义。例如,如果复合索引由{userid :1, score :-1}组成,则索引首先按 userid 正序排序,然后在每个 userid 的值内,再在按 score 倒序排序。

image.png

3、其他索引

地理空间索引(Geospatial Index )、文本索引(Text Indexes )、哈希索引(Hashed Indexes )

1)地理空间索引( Geospatial Index )

为了支持对地理空间坐标数据的有效查询, MongoDB 提供了两种特殊的索引:返回结果时使用平面几何的二维索引和返回结果时使用球面几何的二维球面索引。

2)文本索引( Text Indexes )

MongoDB 提供了一种文本索引类型,支持在集合中搜索字符串内容。这些文本索引不存储特定于语言的停止词(例如 “the ”、“ a ”、“ or ),而将集合中的词作为词干,只存储根词。但是文本索引的性能不高,正式使用时一般还需借用 ES 等成熟的搜索引擎。

3)哈希索引( Hashed Indexes )

为了支持基于散列的分片, MongoD 提供了散列索引类型,它对字段值的散列进行索引。这些索引在其范围内的值分布更加随机,但只支持相等匹配,不支持基于范围的查询。哈希索引不需要特别设置,当做分片时,内部的有算法会自动进行哈希索引。

相关文章
|
Ubuntu 网络安全 Docker
|
存储 缓存 安全
如何保证接口幂等性,幂等性到底是干什么的
本文介绍了幂等性原则及其在程序中的应用。首先定义了幂等性,即无论执行多少次,结果不变的特性,并区分了幂等与非幂等操作。接着详细探讨了实现幂等性的策略,如使用唯一标识符、幂等性标记字段、乐观锁版本控制等。最后,通过Java示例展示了如何实现无状态幂等操作,并强调了幂等性在分布式系统和高并发场景下的重要性。
1140 0
|
10月前
|
传感器 算法 自动驾驶
《5G赋能:朴素贝叶斯算法的实时进化与场景拓展》
5G技术以其高速率、低时延、大连接特性,推动各行业变革。在实时数据处理方面,5G为朴素贝叶斯算法插上翅膀,大幅提升数据传输速度和实时性,保障决策响应即时化,并支持大规模多维度数据处理。5G助力下,该算法在智能交通、远程医疗、工业互联网等领域展现全新活力,实现更精准的分析与预测,为社会发展带来创新与便利。
175 20
LeetCode———100——相同的树
LeetCode———100——相同的树
132 4
|
存储 Rust Shell
Rust 开发命令行工具(上)(二)
Rust 开发命令行工具(上)(二)
295 0
|
存储 Python
字典树(Trie,
字典树(Trie,也称为前缀树或单词查找树)是一种用于存储字符串的树形数据结构。它是一种特殊的多叉树,其中每个节点都包含一个字符和一个指向其子节点的指针数组。字典树的主要作用是用于快速查找字符串和处理字符串的前缀。
133 3
|
移动开发 API
2023阿里云域名优惠口令_COM和CN域名注册和续费使用
2023阿里云域名优惠口令_COM和CN域名注册和续费使用,2023年阿里云域名优惠口令,com域名续费优惠口令“com批量注册更享优惠”,cn域名续费优惠口令“cn注册多个价格更优”,com域名注册优惠口令“梦想从域名开始”,cn域名注册优惠口令“互联网上的中国标识”,阿里云优惠口令是域名专属的优惠码,可用于域名注册、续费和转入使用,域名优惠口令区分域名后缀,阿里云百科分享2023年阿里云域名优惠口令更新(注册、转入、续费均可使用)
337 0
|
物联网
【ESP8266-NodeMCU软硬串口通讯】
【ESP8266-NodeMCU软硬串口通讯】
855 0
|
PHP 流计算 开发者
在PhpStorm中使用PSR2编码规范phpcbf脚本自动修正代码格式
在PhpStorm中使用PSR2编码规范phpcbf脚本自动修正代码格式
335 0
在PhpStorm中使用PSR2编码规范phpcbf脚本自动修正代码格式
|
Linux 网络安全 数据安全/隐私保护
Linux网络管理,NAT网络配置,修改主机名称,主机映射,防火墙,系统启动级别,用户和用户组,为用户配置sudoer权限,文件权限管理,打包和压缩(六)
Linux网络管理,NAT网络配置,修改主机名称,主机映射,防火墙,系统启动级别,用户和用户组,为用户配置sudoer权限,文件权限管理,打包和压缩(六)
Linux网络管理,NAT网络配置,修改主机名称,主机映射,防火墙,系统启动级别,用户和用户组,为用户配置sudoer权限,文件权限管理,打包和压缩(六)