研究一下MongoDB中的复合索引

本文探讨了MongoDB中的复合索引及其使用。首先,通过实例展示了单字段索引如何应用于多字段查询。接着,解释了索引机制和复合索引的工作原理,强调了查询字段顺序对使用索引的影响。然后,讨论了如何更有效地创建和利用复合索引,包括选择正确的排序方向。最后,介绍了在查询操作中如何充分利用索引,包括对嵌套文档和数组的索引策略。
摘要由CSDN通过智能技术生成

上边讲述了mongoDB中也可以用索引提高查询速度,并简单了解了如何利用explain去分析查询语句,需要注意的一点,查询条件key上有索引才会提高效率 。简单的字段索引,比如在name字段建立索引,用name查询时效率肯定块,不过 如果是同时用多个字段查询的时候,还能不能用上索引呢, 接下来,我们就去研究一下 ”复合索引“

1. 先引出问题
  • 索引与查询字段的先后顺序有关么
    比如下边的数据结构的document中, 我们对name字段建了一个索引,我们看一下通过age和name查询的时候,是否用上索引

    > db.peo.insertMany([{
          name : 'abc',age : 14 },{
          name : 'def',age : 16 }])
    > db.peo.ensureIndex({
         name:1})
    > db.peo.find({
         name:'abc','age':14}).explain()
    

    这里只记录用的什么查询方式,

    "winningPlan" : {
         
    		"stage" : "FETCH",
    		"inputStage" : {
         
    			"stage" : "IXSCAN",
    			indexName" : "name_1",
    			...
    

    如果查询条件是 下边的,还能用到name索引么 , 发现结果是可以用的

    > db.peo.find({
         'age':14,name:'abc'}).explain()
    "winningPlan" : {
         
       	"stage" : "FETCH",
       	"inputStage" : {
         
       		"stage" : 
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值