【MongoDB学习笔记21】MongoDB的复合索引
发表于:2024-12-13 作者:千家信息网编辑
千家信息网最后更新 2024年12月13日,索引的值是按照一定顺序排列的,因此使用索引键对文档进行搜索排序比较快;但是只有首先使用索引进行排序时,索引才有用;例如下面的排序里,"username"上的索引就没有起作用:> db.users.fi
千家信息网最后更新 2024年12月13日【MongoDB学习笔记21】MongoDB的复合索引
索引的值是按照一定顺序排列的,因此使用索引键对文档进行搜索排序比较快;但是只有首先使用索引进行排序时,索引才有用;
例如下面的排序里,"username"上的索引就没有起作用:
> db.users.find().sort({"age":1,"username":1})
上面的命令中先根据age排序,在根据username排序,所以username作用并不大。为了优化这个排序,需要在age和username上建立索引:
> db.users.ensureIndex({"age":1,"username":1})
这样就在users集合上建立了一个复合索引(compound index),复合索引就是一个建立在多个字段上的索引。
一、选择索引的方向
索引默认是升序的,在多索引查询的时候,可能需要让索引键的方向不同。例如:
> db.users.ensureIndex({"age":1,"username":-1})
或者
> db.users.ensureIndex({"age":-1,"username":1})
二者是等价的;
年龄按照0-9的顺序排序,在每个年龄分组中安装Z-A的顺序排列;或者用户名按照A-Z的顺利排序,在每个用户分组中按照9-0排序的。
二、使用隐式索引
复合索引在对不同的查询可以表现为不同的索引。如果有一个{"age":1,"username":1}索引,age字段会自动被排序,好似有个{"age":1}的索引;
可以推论,如果有{"a":1,"b":1…….."z":1}的索引,就会有{"a":1},{"a":1,"b":1},{"a":1,"b":1,"c":1}….一系列的索引;
但是,{"b":1}或者{"b":1,"c":1}就不能作为索引来优化查询,意味着只能只能按照索引顺序来优化查询。
索引
排序
顺序
查询
不同
作用
字段
年龄
方向
用户
面的
分组
不大
升序
只有
命令
多个
就是
意味
文档
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
体育生可以报软件开发专业吗
数据库后台管理怎么实现
平顶山软件开发项目
全国统一的金融数据库
中职网络技术研修计划
服务器的文件夹始终用于脱机文件
如何取消服务器报警声
怎么看服务器最近备份时间
软件开发真人认证
华为3000w氮化镓服务器电源
网络安全情况的通报
软件开发做设计书的目的
女生适合做什么软件开发
品质好的内网网络安全防护
安装配置服务器失败
软件开发 猝死
电房服务器
云服务器无法玩网页游戏
怎样让谷歌服务器更新
数据库课设要干什么
网络安全进农村活动
网络安全倡议书新闻
下载的数据库没有data文件
网络安全设备招标资质要求
电视显示连接服务器失败怎么处理
工作人员网络安全管理规定
泰拉瑞亚什么是服务器端口
万企网络技术有限公司
济源的软件开发一个月多少钱
软件开发能用多久