【MongoDB学习笔记21】MongoDB的复合索引

本文涉及的产品
云数据库 MongoDB,独享型 2核8GB
推荐场景:
构建全方位客户视图
简介:

索引的值是按照一定顺序排列的,因此使用索引键对文档进行搜索排序比较快;但是只有首先使用索引进行排序时,索引才有用;

例如下面的排序里,“username”上的索引就没有起作用:

1
> db. users . find (). sort ({ "age" :1, "username" :1})

  
上面的命令中先根据age排序,在根据username排序,所以username作用并不大。为了优化这个排序,需要在age和username上建立索引:

1
> db. users .ensureIndex({ "age" :1, "username" :1})


这样就在users集合上建立了一个复合索引(compound index),复合索引就是一个建立在多个字段上的索引。

 

一、选择索引的方向

索引默认是升序的,在多索引查询的时候,可能需要让索引键的方向不同。例如:

1
> db. users .ensureIndex({ "age" :1, "username" :-1})

或者

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}就不能作为索引来优化查询,意味着只能只能按照索引顺序来优化查询。




本文转自 bannerpei 51CTO博客,原文链接:http://blog.51cto.com/281816327/1600866,如需转载请自行联系原作者
相关实践学习
MongoDB数据库入门
MongoDB数据库入门实验。
快速掌握 MongoDB 数据库
本课程主要讲解MongoDB数据库的基本知识,包括MongoDB数据库的安装、配置、服务的启动、数据的CRUD操作函数使用、MongoDB索引的使用(唯一索引、地理索引、过期索引、全文索引等)、MapReduce操作实现、用户管理、Java对MongoDB的操作支持(基于2.x驱动与3.x驱动的完全讲解)。 通过学习此课程,读者将具备MongoDB数据库的开发能力,并且能够使用MongoDB进行项目开发。   相关的阿里云产品:云数据库 MongoDB版 云数据库MongoDB版支持ReplicaSet和Sharding两种部署架构,具备安全审计,时间点备份等多项企业能力。在互联网、物联网、游戏、金融等领域被广泛采用。 云数据库MongoDB版(ApsaraDB for MongoDB)完全兼容MongoDB协议,基于飞天分布式系统和高可靠存储引擎,提供多节点高可用架构、弹性扩容、容灾、备份回滚、性能优化等解决方案。 产品详情: https://www.aliyun.com/product/mongodb
相关文章
|
2月前
|
存储 NoSQL MongoDB
掌握MongoDB索引优化策略:提升查询效率的关键
在数据库性能调优中,索引是提升查询效率的利器。本文将带你深入了解MongoDB索引的内部工作原理,探讨索引对查询性能的影响,并通过实际案例指导如何针对不同的查询模式建立有效的索引。不仅将涵盖单一字段索引,还会探讨复合索引的使用,以及如何通过分析查询模式和执行计划来优化索引,最终实现查询性能的最大化。
|
1月前
|
存储 NoSQL 关系型数据库
MongoDB索引知识
MongoDB索引知识
28 1
MongoDB索引知识
|
1月前
|
存储 NoSQL MongoDB
MongoDB 索引限制
10月更文挑战第22天
39 2
|
1月前
|
NoSQL MongoDB 索引
MongoDB 高级索引
10月更文挑战第22天
33 2
|
2月前
|
NoSQL MongoDB 索引
MongoDB 覆盖索引查询
10月更文挑战第21天
29 1
|
2月前
|
存储 NoSQL MongoDB
MongoDB 索引
MongoDB 索引
34 3
|
3月前
|
存储 NoSQL 关系型数据库
MongoDB中的索引操作总结
这篇文章总结了MongoDB中索引的概念、创建方法、常见操作指令、限制以及索引对查询效率的影响。
51 2
|
2月前
|
存储 关系型数据库 MySQL
一个项目用5款数据库?MySQL、PostgreSQL、ClickHouse、MongoDB区别,适用场景
一个项目用5款数据库?MySQL、PostgreSQL、ClickHouse、MongoDB——特点、性能、扩展性、安全性、适用场景比较
|
6天前
|
存储 NoSQL 关系型数据库
阿里云数据库MongoDB版助力信也科技 打造互联网金融企业样板
我们的风控系统引入阿里云数据库MongoDB版后,解决了特征类字段灵活加减的问题,大大提高了开发效率,极大的提升了业务用户体验,获得了非常好的效果
阿里云数据库MongoDB版助力信也科技 打造互联网金融企业样板
|
1月前
|
NoSQL Cloud Native atlas
探索云原生数据库:MongoDB Atlas 的实践与思考
【10月更文挑战第21天】本文探讨了MongoDB Atlas的核心特性、实践应用及对云原生数据库未来的思考。MongoDB Atlas作为MongoDB的云原生版本,提供全球分布式、完全托管、弹性伸缩和安全合规等优势,支持快速部署、数据全球化、自动化运维和灵活定价。文章还讨论了云原生数据库的未来趋势,如架构灵活性、智能化运维和混合云支持,并分享了实施MongoDB Atlas的最佳实践。