【MongoDB学习笔记21】MongoDB的复合索引
发表于:2025-11-06 作者:千家信息网编辑
千家信息网最后更新 2025年11月06日,索引的值是按照一定顺序排列的,因此使用索引键对文档进行搜索排序比较快;但是只有首先使用索引进行排序时,索引才有用;例如下面的排序里,"username"上的索引就没有起作用:> db.users.fi
千家信息网最后更新 2025年11月06日【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安全错误
数据库的锁怎样保障安全
数据库还原时磁盘满了
王者荣耀s14更新服务器
重庆科技产业互联网
网络安全协议工程师
定制软件开发流程图
网吧管理服务器怎么配置
上海软件开发中心地址
sun服务器串口连不上
区块链软件开发招聘
数据库提示信息消失不了
低学历零基础进软件开发公司
金凤区软件开发
网络安全新模式
双十一数据库核心技术
防范网络安全的方法
怎么获得steam服务器ip
网络安全涉及到实体安全和
如何部署软件到服务器
国民档案数据库安全
股票是哪个软件开发
把服务器当做普通电脑使用
关系数据库中的键是指( )
移动app转载软件开发
车载网络技术与检修
中国口头文学遗产数据库总目
无服务器的好处和坏处
新疆dns服务器
中小企业网络安全防御
主题数据库地点分布
node 访问数据库