mongodb索引---复合索引
复合索引(Compound Indexes)指一个索引包含多个字段,用法和单键索引基本一致。使用复合索引时要注意字段的顺序,如下添加一个name和age的复合索引,name正序,age倒序,document首先按照name正序排序,然后name相同的document按age进行倒序排序。mongoDB中一个复合索引最多可以包含32个字段。
1 准备测试数据
db.userinfos.insertMany([{_id:1, name: "张三", age: 23,level:10, ename: { firstname: "san", lastname: "zhang"}, roles: ["vip","gen" ]},{_id:2, name: "李四", age: 24,level:20, ename: { firstname: "si", lastname: "li"}, roles:[ "vip" ]},{_id:3, name: "王五", age: 25,level:30, ename: { firstname: "wu", lastname: "wang"}, roles: ["gen","vip" ]},{_id:4, name: "赵六", age: 26,level:40, ename: { firstname: "liu", lastname: "zhao"}, roles: ["gen"] },{_id:5, name: "田七", age: 27, ename: { firstname: "qi", lastname: "tian"}, address:'北京' },{_id:6, name: "周八", age: 28,roles:["gen"], address:'上海' }
]);
2 新建索引,用explain查看执行计划
//添加复合索引,name正序,age倒序
db.userinfos.createIndex({ "name": 1, "age": -1 })
//过滤条件为name,或包含name的查询会使用索引(索引的第一个字段),以下都会用到索引
db.userinfos.find({ name: '张三' }).explain()
db.userinfos.find({ name: "张三", level: 10 }).explain()
db.userinfos.find({ name: "张三", age: 23 }).explain()//查询条件为age时,不会使用上边创建的索引,而是使用的全表扫描
db.userinfos.find({ age: 23 }).explain()
mongodb索引---复合索引相关推荐
- 【MongoDB学习笔记21】MongoDB的复合索引
索引的值是按照一定顺序排列的,因此使用索引键对文档进行搜索排序比较快:但是只有首先使用索引进行排序时,索引才有用: 例如下面的排序里,"username"上的索引就没有起作用: & ...
- pandas索引复合索引dataframe数据、索引其中一个水平(level)的所有数据行(index all rows in a level)
pandas索引复合索引dataframe数据.索引其中一个水平(level)的所有数据行(index all rows in a level) 目录
- pandas索引复合索引dataframe数据、索引dataframe中指定行和指定列交叉格子的数据内容(getting a specific value)、使用元组tuple表达复合索引的指定行
pandas索引复合索引dataframe数据.索引dataframe中指定行和指定列交叉格子的数据内容(getting a specific value).使用元组tuple表达复合索引的指定行 目 ...
- pandas索引复合索引dataframe数据、索引其中一个水平(level)的所特定数据行、指定数据行(index a row of a level)、使用元组tuple表达复合索引的指定行
pandas索引复合索引dataframe数据.索引其中一个水平(level)的所特定数据行.指定数据行(index a row of a level).使用元组tuple表达复合索引的指定行 目录
- pandas索引复合索引dataframe数据、索引其中多个水平(level)的多个数据行(index rows from different levels)、使用元组tuple表达复合索引的指定行
pandas索引复合索引dataframe数据.索引其中多个水平(level)的多个数据行(index rows from different levels and combine).使用元组tupl ...
- pandas索引复合索引dataframe数据、索引其中一个水平(level)的特定数据列(index a column of a level)
pandas索引复合索引dataframe数据.索引其中一个水平(level)的特定数据列(index a column of a level) 目录
- Pandas中xs()函数索引复合索引数据的不同切面数据(索引复合索引中需要的数据):索引列复合索引中的一个切面、索引行复合索引中的一个切面
Pandas中xs()函数索引复合索引数据的不同切面数据(索引复合索引中需要的数据):索引列复合索引中的一个切面.索引行复合索引中的一个切面 目录
- MySQL 性能分析 之 联合索引(复合索引)实践分析
MySQL 性能分析 之 联合索引(复合索引)实践分析 作为开发者,大家都知道,一个服务器.一个数据库的性能是项目的重中之重,后台架构.写法与数据库设计的好坏往往直接影响到整个项目的性能. 索引:是当 ...
- 【推荐】mysql联合 索引(复合索引)的探讨
Mysql联合 索引(复合索引)的使用原则 命名规则:表名_字段名 需要加索引的字段,要在where条件中. 数据量少的字段不需要加索引.最窄的字段放在键的左边. 如果where条件中是OR关系,必须 ...
最新文章
- shell中引号的使用方法
- photoshop CS不能打字,出现死机等现象的解决办法!!
- Qtum量子链受邀出席日本早稻田研究所区块链教育讲座
- Comparison of video container formats
- Windows 10系统下 MySql 5.7 my.ini 位置
- 一、Linear Regression
- linux下的C语言开发(进程创建)
- 算法导论 思考题9-2
- Android自己写的三款实用开关控件
- Go Slice 高级实践
- 向已知EXCEL模板写入数据并导出
- 拼多多店铺等级怎么提升?店盈通来告诉你
- 信息系统项目管理师自学笔记(二十二)—— 网络应用与管理
- java源码app,飞飞CMS双端JAVA原生APP源码
- 简述cookie增删改查的函数封装
- 如何使用PTGUI全景合成软件进行照片拼接
- 计算机三级网络技术最全知识点总结三
- Web安全-网页开发者工具
- cadence学习资料整理
- 正则表达式匹配非某字符串的情况
热门文章
- 物联网给人类带来的潜在生命危险,我们必须重视起来
- PostgreSQL操作-psql基本命令
- js数组有最大长度吗?
- 微信小程序之bindtap事件传参
- 极客日报第 64 期:抖音否认封杀腾讯;程序员拒绝带电脑回家被开除,获赔 19.4 万;微软称 Excel 是编程语言...
- LUA语言学习教程(转)
- java迭代器_java 迭代器
- (Java)word转pdf(aspose),pdf加水印(itextpdf),并支持POI模板(包括checkbox)导出
- python如何测试仪器_Python中的测试工具
- Java面试复习总结(Mysql篇9)——MySQL里的那些日志