MongoDB 索引(二)

mysql联合索引的最左前缀匹配原则 目录 什么是最左匹配原则? 最左匹配原则的原理 总结 为什么要使用联合索引? 使用索引优化查询问题: 什么是最左匹配原则? 最左匹配原则就是指在联合索引中,如果你的 SQL 语句中用到了联合索引中的最左边的索引,那么这条 SQL 语句就可以利用这个联合索引去进行匹配。例如某表现有索引(a,b,c),现在你有如下语句: select * from t where a=1 and b=1 and c =1; #这样可以利用到定义的索引(a,b,c),用上a,b,c select. 阅读详情

MongoDB 索引

简介

索引的作用是为了提升查询效率,在查询操作中,如果没有索引,MongoDB 会扫描集合中的每个文档,以选择与查询语句匹配的文档。如果查询条件带有索引,MongoDB 将扫描索引, 通过索引确定要查询的部分文档,而非直接对全部文档进行扫描。

索引可以提升文档的查询速度,但建立索引的过程需要使用计算与存储资源,在已经建立索引的前提下,插入新的文档会引起索引顺序的重排。

MongoDB 的索引是基于 B-tree 数据结构及对应算法形成的。树索引存储特定字段或字段集的值,按字段值排序。索引条目的排序支持有效的等式匹配和基于范围的查询操作。

B-tree

TODO

索引类型及创建

MongoDB 中的索引类型有:
普通索引,复合索引,多键值索引,地理索引,全文索引,散列索引等。

普通索引

db.collection.createIndex({"field": 1})   // 1 升序  -1 降序

复合索引

复合索引包括多个字段,支持在多个字段上进行匹配查询。

db.collection.createIndex({<key1>:<type>, <key2>:<type2>, ...})

tips: 复合索引一定要注意顺序问题。

多键值索引

多键值索引指的是为包含数组的字段建立索引,MongoDB 会为数组中的每个元素都创建索引。

db.collection.createIndex({<key>: <1 or -1>})

地理索引

地理索引包含两种地理类型,如果需要计算的地理数据表示为类似于地球的球形表面上的坐标,则可以使用 2dsphere 索引。

通常可以按照坐标轴、经度、纬度的方式把位置数据存储为 GeoJSON 对象。GeoJSON 的坐标参考系使用的是 wgs84 数据。如果需要计算距离(在一个欧几里得平面上),通常可以按照正常坐标对的形式存储位置数据,可使用 2d 索引。

db.colleciton.createIndex({<localtion field>: "2d"})

全文索引

MongoDB 的全文检索提供三个版本,用户在使用时可以指定相应的版本,如果不指定则默认选择当前版本对应的全文索引。

MongoDB 提供的文本索引支持对字符串内容的文本搜索查询,但是这种索引因为需要检索的文件比较多,因此在使用的时候检索时间较长。

db.collection.createIndex ({ key: "text" })

散列索引

散列(Hashed)索引是指按照某个字段的散列值来建立索引,目前主要用于 MongoDB Sharded Cluster 的散列分片,散列索引只能用于字段完全匹配的查询,不能用于范围查询等。

db.collection.createIndex({_id: "hashed"})

MongoDB 支持散列任何单个字段的索引,但是不支持多键(即数组)索引。

索引参数

上面列出的都是索引的类别,在每个索引的类别上还可以加上一些参数,使索引更加具有针对性,常见的参数包括稀疏索引、唯一索引、过期索引等。

稀疏索引

只检索包含具有索引字段的文档,即使索引字段包含空值,检索时也会跳过所有缺少索引字段的文档。因为索引不包含集合的所有文档,所以说索引是稀疏的。相反,非稀疏索引包含集合中的所有文档,存储不包含索引字段的文档的空值。

db.collection.createlndex ({ "key" : 1 }, { sparse : true })

如果设置了唯一索引,新插入文档时,要求 key 的值是唯一的,不能有重复的出现:

db.collection.createlndex ({ "key" : 1 }, { unique: true })

过期索引

一种特殊的单字段索引,MongoDB 可以用来在一定时间或特定时间后从集合中自动删除文档。

过期索引对于处理某些类型的信息非常有用,例如,机器生成的事务数据、日志和会话信息,这些信息只需要在数据库中存在有限的时间,不需要长期保存。

db.collection.createlndex( {"key" : 1 }, { expireAfterSeconds: 3600 })

需要注意的是,MongoDB 是每 60s 执行一次删除操作,因此短时间内执行会出现延迟现象。

查看索引

db.collection.getIndexes()

删除索引

MongoDB 提供的两种从集合中删除索引的方法如下:

db.collection.dropIndex()

db.collection.dropIndexes()

若要删除特定索引,则可使用该 db.collection.droplndex() 方法。

例如,以下操作将删除集合中 score 字段的升序索引:

db.records.dropIndex ({ "score" : 1 })  //升序降序不能错,如果为-1,则提示无索引

还可以使用 db.collection.droplndexes() 删除除 _id 索引之外的所有索引。

例如,以下命令将从 records 集合中删除所有索引:

db.records.dropIndexes()

修改索引

若要修改现有索引,则需要删除现有索引并重新创建索引。

PostgreSQL Vacuum---索引删除 PostgreSQL Vacuum—索引删除 预备知识 《PostgreSQL Vacuum—元组删除》 《PostgreSQL B+树索引—并发控制》 概述 在《PostgreSQL Vacuum—元组删除》中,我们现实阐述了元组的删除过程,从中我们知道,在删除索引之前HOT链的链头元组的ItemData只能被标记为LP_DEAD来防止重用,只有当索引删除之后ItemData才能标记为LP_UNUSED以供重用。所以本章我们将来删除如何删除索引。索引的删除有如下两个场景: 用户执行Vaccum命令 阅读详情

相关推荐

oracle rac环境下索引热块的处理思路

oracle rac环境下索引热块的处理思路oracle rac环境下索引热块的处理思路

Mysql 索引汇总

索引有几种 MYSQL的索引主要分为主键索引(PRIMARY KEY),唯一索引(UNIQUE) ,普通索引(INDEX)和全文索引(FULLTEXT) 。 主键索引:数据记录里面不能有null,内容不能重复,在一张表中不能有多个主键索引。 普通索引:使用字段关键字建立的索引,主要是提高查询速度。 唯一索引:字段数据是唯一的,数据内容能为null。一张表中可以添加多个唯一索引。 全文索引:老版本...

DefineJ的博客 433

STK中的传感器与通信组件:雷达、发射机、接收机与天线的协同建模

本文深入解析了STK软件中传感器、雷达、发射机、接收机与天线的协同建模方法。通过构建一个完整的卫星对地数传系统实例,阐述了各组件如何分工协作,实现从几何指向到射频链路的高保真仿真,为复杂航天通信与探测系统的设计与分析提供了高效、灵活的解决方案。

weixin_29271263的博客 273

五、MySql索引基本介绍

上篇文章介绍了查询命令中过慢的语句,总结原因如下: 查询命令过慢的原因: 在执行时需要对所有的数据来进行排序 在执行时需要对表中所有数据进行遍历 通过I/O流加载表文件次数 索引介绍: 【定义】: 索引存在于对应的索引文件中,索引本质就是排好了顺序的一组数据 【作用】: 在索引数据中进行排序时,避免再次排序 在索引数据中对数据行进行定位时,可以避免全表扫面 【索引文件位置】: 如果当前的表依赖于innodb存储引擎,索引存在于FRM文件中 如果当前的表依赖于myisam存储引擎,所以.

Jian Sun_的博客 1323

MobaXterm远程连接频繁掉线?3个SSH保活设置让你告别断连烦恼

本文针对MobaXterm远程连接频繁掉线问题,提供了3个SSH保活设置方案。从基础的SSH心跳机制到进阶的会话超时调整,再到TCP层保活与代理优化,全方位解决断连烦恼。特别适合需要稳定远程连接的开发者和运维人员,有效提升工作效率。

weixin_29250573的博客 486

Triton推理服务器实战:如何为PaddleOCR的ONNX模型配置动态批处理和并发推理

本文详细介绍了如何使用Triton推理服务器为PaddleOCR的ONNX模型配置动态批处理和并发推理,以提升GPU利用率和推理性能。通过实战案例和参数调优指南,帮助开发者解决高并发场景下的性能瓶颈问题,实现从实验室到生产环境的高效部署。

weixin_42527160的博客 426

mongodb中的索引二

通常mongodb中的索引的创建方式如下: {sortkey:1querycriteria:1} 这种方式下,已经排好顺序了,所以只要在排好序的key中找满足查询条件的记录即可,需要扫描的数据量比较大,还有一种索引的创建方式: {querycriteria:1,sortkey:1}这种创建的方式中,不需要扫描很多的记录,在索引中查找满足条件的记录,但是需要在内存中排序,如果满足记录的条件很多,

敖尔其楞的专栏 734

YOLOv8中Anchor-Based、Anchor-Free及样本分配策略

本文主要介绍yolov8中的anchor机制与样本分配策略的静态策略和动态策略

qq_52889317的博客 2211

MongoDB--二、索引

官方文档https://docs.mongodb.com/manual/ 2.1、索引存储结构 MongoDB索引使用B树数据结构,MySQL是B+Tree,本节内容来源于https://blog.youkuaiyun.com/yin767833376/article/details/81511377 2.1.1 B Tree(平衡二叉树) [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-p5YKJuFo-1601305239556)(/Users/cs/Library/Applicati

chenside2002的专栏 485

Cocos Creator 3D音频定位实战:从原理到沉浸感实现

3D音频定位是游戏开发中实现沉浸感的关键技术,其核心原理基于HRTF(头部相关传输函数)模型,模拟声音在空间中的传播与双耳感知差异。这项技术通过赋予声音空间坐标、距离衰减和方向属性,将音频从背景元素提升为可交互的环境线索,极大增强了虚拟世界的真实感与玩家的空间认知。在工程实践中,开发者需要深入理解声源、听者、衰减曲线与多普勒效应等基础概念,并合理运用音频池、优先级管理与动态混音等技术手段来平衡效果与性能。对于Cocos Creator开发者而言,无论是使用引擎原生的AudioSource组件构建轻量级方案,

weixin_30972263的博客 291

使用 Simulink 实现基于相控阵雷达的波束形成技术

摘要:本文详细介绍了利用MATLAB Simulink和Phased Array System工具箱实现相控阵雷达波束形成的完整流程。主要内容包括:1)创建Simulink模型;2)设计天线阵列参数;3)信号生成模块配置;4)波束形成算法实现;5)结果可视化方法;6)仿真调试与优化;7)代码导出与部署。通过分步指导,读者可以掌握从理论到实践的完整开发流程,包括关键参数设置和算法实现示例。该方案适用于军事、气象等领域的雷达系统开发,并支持后续嵌入式和智能算法集成。

xiaoheshang_123的博客 179

二、MongoDB聚合操作,索引

一、MongoDB聚合操作 MongoDB聚合框架是一个计算框架作用在一个或几个集合对集合中的数据进行一系列运算 将这些数据转化为期望的形式 如: 现在有一组数据 db.orders.insertMany( [ { zip:"000001", phone:"13101010101", name:"LiuBei", status:"created", shippingFee:10, orderLines:[ {product:"Huawei Meta30 Pro",sku:"2.

Xx__WangQi的博客 1047

使用 MATLAB/Simulink 对基于同步发电机的双机系统进行建模,并对其在短路故障条件下的暂态稳定性进行仿真和分析

双机系统(Two-Machine System)是电力系统中用于研究动态稳定性和控制策略的一个典型模型。它由两台同步发电机通过输电网络相互连接,模拟实际电网中的互联操作。当发生短路故障时,系统的暂态稳定性会受到挑战,可能导致发电机失步或电压崩溃。本教程将带你使用 MATLAB/Simulink 对基于同步发电机的双机系统进行建模,并对其在短路故障条件下的暂态稳定性进行仿真和分析。

amy_mhd的博客 8506

mongodb 索引详解(二)

1.单字段索引 原文链接:https://docs.mongodb.com/manual/core/index-single/ MongoDB为文档集合中的任何字段提供完整的索引支持 。默认情况下,所有集合在_id字段上都有索引,应用程序和用户可以添加其他索引以支持重要的查询和操作。 本文档描述了单个字段的升序/降序索引。 1.1 在单个字段上创建升序索引 如: r...

jing_flower的博客 420

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

MongoDB索引Index(二)

介绍了MongoDB索引的相关细节

凉茶铺的博客 717

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

MongoDB 入门 (二)索引

MongoDB 入门 (二)索引索引基本概述索引的类型索引的管理查看索引创建索引索引的移除索引的使用 索引基本概述 索引支持在MongoDB中高效地执行查询。如果没有索引,MongoDB必须执行全集合扫描,即扫描集合中的每个文档,以选择与查询语句匹配的文档。这种扫描全集合的查询效率是非常低的,特别在处理大量的数据时,查询可以要花费几十秒甚至几分钟,这对网站的性能是非常致命的。 如果查询存在适当的索引,MongoDB可以使用该索引限制必须检查的文档数。 索引是特殊的数据结构,它以易于遍历的形式存储集合数据集的

Hitomi_HXT的博客 230

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

Mongodb索引(二)

索引类型 文档数据 { "billId":"1001", "amount":600, "address":"广东省深圳市", "date":"2021-10-14", "payWay":"微信支付", "sku":{"name":"可口可乐","num":2,"price":300} } 单字段索引 单个字段上创建索引 db.bill.createIndex( { amount: 1 } ) 嵌入式字段创建索引 db.bill.creat.

RunTimeExcepti0n的博客 308

【MongoDB】索引概述(二)

四、索引属性 1.唯一索引 索引的unique属性使MongoDB防止索引字段出现重复值。除了唯一约束功能之外,唯一索引在功能上可以与其他MongoDB索引互换。 2.局部索引 3.2版中的新功能。 局部索引仅索引集合中符合指定过滤器表达式的文档。通过索引集合中文档的子集,局部索引具有较低的存储需求,并降低了索引创建和维护的性能成本。 局部索引提供了稀疏索引功能的超集,应优先于稀疏索引。 超集定义:如果一个集合S2中的每一个元素都在集合S1中,且集合S1中可能包含S2中没有的元素,则集.

chechengtao 254

学习MongoDB 八: MongoDB索引(索引限制条件)(二)

一、简介       我们上一篇介绍了索引基本操作,通过db.collection.createIndex(keys, options)语法创建索引,我们继续介绍地理空间索引、索引的限制,使我们在MongoDB时能提高查询效率。       索引的语法:                 db.collection.createIndex(keys,options)           

yangjiangyy的博客 769

MONGODB(二)——索引操作

一、1、插入10w条数据> for(var i = 0;i<100000;i++){... var rand = parseInt(i*Math.random());... db.person.insert({"name":"hxc"+i,"age":i})... }2、使用性能分析函数explain> db.person.find({“name”:”hxc”+1000...

a5678110的博客 159

MongoDB学习(二)索引的用法

MongoDB与sql关于库表的名字: database == database collection == table document == row 本篇转载自:http://blog.nosqlfan.com/html/271.html   索引能提高检索数据的速度,你可以想像成在MySQL中创建索引一样,同样索引也是用B-Tree也实现的。 1.单列索引 在字段...

sha0k的专栏 181

mongodb笔记(二)索引、python与mongodb交互

mongodb笔记索引创建索引python与mongodb交互重点 索引 创建索引 索引:以提升查询速度 测试:插入10万条数据到数据库中 for(i=0;i<100000;i++){db.t12.insert({name:'test'+i,age:i})} db.t1.find({name:'test10000'}) db.t1.find({name:'test10000'}).explain('executionStats') 建立索引之后对比: 语法:db.集合.ensureIndex({属

行者 821
上一篇: MongoDB 快速入门(一)
下一篇: MongoDB 分布式集群(三)
达文西wgj
博客等级 码龄9年 4粉丝 13原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值