mongodb 2.6.3使用错误索引

时间:2014-08-22 11:27:41

标签: mongodb-indexes

我有一个类似下面的查询。显然,更好的索引是“platform_1_keyuserAccountID_1_weiboAccountID_1_postTime_1”,但是mongodb选择“weiboAccountID_1”,我做错了什么?


db.inbox_weibo.find({platform: "sina", keyuserAccountID:"1665337047", weiboAccountID: "2271338624"}).explain(true);


{
    "cursor" : "BtreeCursor weiboAccountID_1",
    "isMultiKey" : false,
    "n" : 1,
    "nscannedObjects" : 1,
    "nscanned" : 1,
    "nscannedObjectsAllPlans" : 24,
    "nscannedAllPlans" : 634425,
    "scanAndOrder" : false,
    "indexOnly" : false,
    "nYields" : 1,
    "nChunkSkips" : 0,
    "millis" : 2912,
    "indexBounds" : {
        "weiboAccountID" : [
            [
                "2271338624",
                "2271338624"
            ]
        ]
    },
    "allPlans" : [
        {
            "cursor" : "BtreeCursor weiboAccountID_1",
            "isMultiKey" : false,
            "n" : 1,
            "nscannedObjects" : 1,
            "nscanned" : 1,
            "scanAndOrder" : false,
            "indexOnly" : false,
            "nChunkSkips" : 0,
            "indexBounds" : {
                "weiboAccountID" : [
                    [
                        "2271338624",
                        "2271338624"
                    ]
                ]
            }
        },
        {
            "cursor" : "BtreeCursor platform_1_keyuserAccountID_1_dealed_1_operatorID_1_weiboAccountID_1_postTIme_-1",
            "isMultiKey" : false,
            "n" : 1,
            "nscannedObjects" : 1,
            "nscanned" : 62,
            "scanAndOrder" : false,
            "indexOnly" : false,
            "nChunkSkips" : 0,
            "indexBounds" : {
                "platform" : [
                    [
                        "sina",
                        "sina"
                    ]
                ],
                "keyuserAccountID" : [
                    [
                        "1665337047",
                        "1665337047"
                    ]
                ],
                "dealed" : [
                    [
                        {
                            "$minElement" : 1
                        },
                        {
                            "$maxElement" : 1
                        }
                    ]
                ],
                "operatorID" : [
                    [
                        {
                            "$minElement" : 1
                        },
                        {
                            "$maxElement" : 1
                        }
                    ]
                ],
                "weiboAccountID" : [
                    [
                        "2271338624",
                        "2271338624"
                    ]
                ],
                "postTIme" : [
                    [
                        {
                            "$maxElement" : 1
                        },
                        {
                            "$minElement" : 1
                        }
                    ]
                ]
            }
        },
        {
            "cursor" : "BtreeCursor platform_1_keyuserAccountID_1_weiboAccountID_1_postTime_-1",
            "isMultiKey" : false,
            "n" : 1,
            "nscannedObjects" : 1,
            "nscanned" : 1,
            "scanAndOrder" : false,
            "indexOnly" : false,
            "nChunkSkips" : 0,
            "indexBounds" : {
                "platform" : [
                    [
                        "sina",
                        "sina"
                    ]
                ],
                "keyuserAccountID" : [
                    [
                        "1665337047",
                        "1665337047"
                    ]
                ],
                "weiboAccountID" : [
                    [
                        "2271338624",
                        "2271338624"
                    ]
                ],
                "postTime" : [
                    [
                        {
                            "$maxElement" : 1
                        },
                        {
                            "$minElement" : 1
                        }
                    ]
                ]
            }
        },
        {
            "cursor" : "BtreeCursor platform_keyuserAccountID_dealed_postTime_weiboAccountID",
            "isMultiKey" : false,
            "n" : 1,
            "nscannedObjects" : 1,
            "nscanned" : 634331,
            "scanAndOrder" : false,
            "indexOnly" : false,
            "nChunkSkips" : 0,
            "indexBounds" : {
                "platform" : [
                    [
                        "sina",
                        "sina"
                    ]
                ],
                "keyuserAccountID" : [
                    [
                        "1665337047",
                        "1665337047"
                    ]
                ],
                "dealed" : [
                    [
                        {
                            "$minElement" : 1
                        },
                        {
                            "$maxElement" : 1
                        }
                    ]
                ],
                "postTime" : [
                    [
                        {
                            "$maxElement" : 1
                        },
                        {
                            "$minElement" : 1
                        }
                    ]
                ],
                "weiboAccountID" : [
                    [
                        "2271338624",
                        "2271338624"
                    ]
                ]
            }
        },
        {
            "cursor" : "BtreeCursor platform_1_keyuserAccountID_1_mid_1",
            "isMultiKey" : false,
            "n" : 0,
            "nscannedObjects" : 2,
            "nscanned" : 3,
            "scanAndOrder" : false,
            "indexOnly" : false,
            "nChunkSkips" : 0,
            "indexBounds" : {
                "platform" : [
                    [
                        "sina",
                        "sina"
                    ]
                ],
                "keyuserAccountID" : [
                    [
                        "1665337047",
                        "1665337047"
                    ]
                ],
                "mid" : [
                    [
                        {
                            "$minElement" : 1
                        },
                        {
                            "$maxElement" : 1
                        }
                    ]
                ]
            }
        },
        {
            "cursor" : "BtreeCursor platform_1_keyuserAccountID_1_dealerID_1",
            "isMultiKey" : false,
            "n" : 0,
            "nscannedObjects" : 2,
            "nscanned" : 3,
            "scanAndOrder" : false,
            "indexOnly" : false,
            "nChunkSkips" : 0,
            "indexBounds" : {
                "platform" : [
                    [
                        "sina",
                        "sina"
                    ]
                ],
                "keyuserAccountID" : [
                    [
                        "1665337047",
                        "1665337047"
                    ]
                ],
                "dealerID" : [
                    [
                        {
                            "$minElement" : 1
                        },
                        {
                            "$maxElement" : 1
                        }
                    ]
                ]
            }
        },
        {
            "cursor" : "BtreeCursor distinctAccountAgg",
            "isMultiKey" : false,
            "n" : 0,
            "nscannedObjects" : 2,
            "nscanned" : 3,
            "scanAndOrder" : false,
            "indexOnly" : false,
            "nChunkSkips" : 0,
            "indexBounds" : {
                "platform" : [
                    [
                        "sina",
                        "sina"
                    ]
                ],
                "keyuserAccountID" : [
                    [
                        "1665337047",
                        "1665337047"
                    ]
                ],
                "dealed" : [
                    [
                        {
                            "$minElement" : 1
                        },
                        {
                            "$maxElement" : 1
                        }
                    ]
                ],
                "operatorID" : [
                    [
                        {
                            "$minElement" : 1
                        },
                        {
                            "$maxElement" : 1
                        }
                    ]
                ],
                "postTime" : [
                    [
                        {
                            "$maxElement" : 1
                        },
                        {
                            "$minElement" : 1
                        }
                    ]
                ]
            }
        },
        {
            "cursor" : "BtreeCursor fansCountUndealed",
            "isMultiKey" : false,
            "n" : 0,
            "nscannedObjects" : 2,
            "nscanned" : 3,
            "scanAndOrder" : false,
            "indexOnly" : false,
            "nChunkSkips" : 0,
            "indexBounds" : {
                "platform" : [
                    [
                        "sina",
                        "sina"
                    ]
                ],
                "keyuserAccountID" : [
                    [
                        "1665337047",
                        "1665337047"
                    ]
                ],
                "dealed" : [
                    [
                        {
                            "$minElement" : 1
                        },
                        {
                            "$maxElement" : 1
                        }
                    ]
                ],
                "fromType" : [
                    [
                        {
                            "$minElement" : 1
                        },
                        {
                            "$maxElement" : 1
                        }
                    ]
                ],
                "fansCount" : [
                    [
                        {
                            "$maxElement" : 1
                        },
                        {
                            "$minElement" : 1
                        }
                    ]
                ],
                "postTime" : [
                    [
                        {
                            "$maxElement" : 1
                        },
                        {
                            "$minElement" : 1
                        }
                    ]
                ],
                "usePicture" : [
                    [
                        {
                            "$minElement" : 1
                        },
                        {
                            "$maxElement" : 1
                        }
                    ]
                ]
            }
        },
        {
            "cursor" : "BtreeCursor retweetCountUndealed",
            "isMultiKey" : false,
            "n" : 0,
            "nscannedObjects" : 2,
            "nscanned" : 3,
            "scanAndOrder" : false,
            "indexOnly" : false,
            "nChunkSkips" : 0,
            "indexBounds" : {
                "platform" : [
                    [
                        "sina",
                        "sina"
                    ]
                ],
                "keyuserAccountID" : [
                    [
                        "1665337047",
                        "1665337047"
                    ]
                ],
                "dealed" : [
                    [
                        {
                            "$minElement" : 1
                        },
                        {
                            "$maxElement" : 1
                        }
                    ]
                ],
                "fromType" : [
                    [
                        {
                            "$minElement" : 1
                        },
                        {
                            "$maxElement" : 1
                        }
                    ]
                ],
                "sourceRetweetCount" : [
                    [
                        {
                            "$maxElement" : 1
                        },
                        {
                            "$minElement" : 1
                        }
                    ]
                ],
                "postTime" : [
                    [
                        {
                            "$maxElement" : 1
                        },
                        {
                            "$minElement" : 1
                        }
                    ]
                ],
                "usePicture" : [
                    [
                        {
                            "$minElement" : 1
                        },
                        {
                            "$maxElement" : 1
                        }
                    ]
                ]
            }
        },
        {
            "cursor" : "BtreeCursor interactUndealed",
            "isMultiKey" : false,
            "n" : 0,
            "nscannedObjects" : 2,
            "nscanned" : 3,
            "scanAndOrder" : false,
            "indexOnly" : false,
            "nChunkSkips" : 0,
            "indexBounds" : {
                "platform" : [
                    [
                        "sina",
                        "sina"
                    ]
                ],
                "keyuserAccountID" : [
                    [
                        "1665337047",
                        "1665337047"
                    ]
                ],
                "dealed" : [
                    [
                        {
                            "$minElement" : 1
                        },
                        {
                            "$maxElement" : 1
                        }
                    ]
                ],
                "fromType" : [
                    [
                        {
                            "$minElement" : 1
                        },
                        {
                            "$maxElement" : 1
                        }
                    ]
                ],
                "userInteractionCount" : [
                    [
                        {
                            "$maxElement" : 1
                        },
                        {
                            "$minElement" : 1
                        }
                    ]
                ],
                "postTime" : [
                    [
                        {
                            "$maxElement" : 1
                        },
                        {
                            "$minElement" : 1
                        }
                    ]
                ],
                "usePicture" : [
                    [
                        {
                            "$minElement" : 1
                        },
                        {
                            "$maxElement" : 1
                        }
                    ]
                ]
            }
        },
        {
            "cursor" : "BtreeCursor platform_1_keyuserAccountID_1_dealed_1_dealTime_-1",
            "isMultiKey" : false,
            "n" : 0,
            "nscannedObjects" : 2,
            "nscanned" : 3,
            "scanAndOrder" : false,
            "indexOnly" : false,
            "nChunkSkips" : 0,
            "indexBounds" : {
                "platform" : [
                    [
                        "sina",
                        "sina"
                    ]
                ],
                "keyuserAccountID" : [
                    [
                        "1665337047",
                        "1665337047"
                    ]
                ],
                "dealed" : [
                    [
                        {
                            "$minElement" : 1
                        },
                        {
                            "$maxElement" : 1
                        }
                    ]
                ],
                "dealTime" : [
                    [
                        {
                            "$maxElement" : 1
                        },
                        {
                            "$minElement" : 1
                        }
                    ]
                ]
            }
        },
        {
            "cursor" : "BtreeCursor platform_1_keyuserAccountID_1_dealerID_1_postTime_-1",
            "isMultiKey" : false,
            "n" : 0,
            "nscannedObjects" : 2,
            "nscanned" : 3,
            "scanAndOrder" : false,
            "indexOnly" : false,
            "nChunkSkips" : 0,
            "indexBounds" : {
                "platform" : [
                    [
                        "sina",
                        "sina"
                    ]
                ],
                "keyuserAccountID" : [
                    [
                        "1665337047",
                        "1665337047"
                    ]
                ],
                "dealerID" : [
                    [
                        {
                            "$minElement" : 1
                        },
                        {
                            "$maxElement" : 1
                        }
                    ]
                ],
                "postTime" : [
                    [
                        {
                            "$maxElement" : 1
                        },
                        {
                            "$minElement" : 1
                        }
                    ]
                ]
            }
        },
        {
            "cursor" : "BtreeCursor platform_1_keyuserAccountID_1_postTime_-1",
            "isMultiKey" : false,
            "n" : 0,
            "nscannedObjects" : 2,
            "nscanned" : 3,
            "scanAndOrder" : false,
            "indexOnly" : false,
            "nChunkSkips" : 0,
            "indexBounds" : {
                "platform" : [
                    [
                        "sina",
                        "sina"
                    ]
                ],
                "keyuserAccountID" : [
                    [
                        "1665337047",
                        "1665337047"
                    ]
                ],
                "postTime" : [
                    [
                        {
                            "$maxElement" : 1
                        },
                        {
                            "$minElement" : 1
                        }
                    ]
                ]
            }
        },
        {
            "cursor" : "BtreeCursor keyuserAccountID_dealed_createTime_-1",
            "isMultiKey" : false,
            "n" : 0,
            "nscannedObjects" : 2,
            "nscanned" : 3,
            "scanAndOrder" : false,
            "indexOnly" : false,
            "nChunkSkips" : 0,
            "indexBounds" : {
                "keyuserAccountID" : [
                    [
                        "1665337047",
                        "1665337047"
                    ]
                ],
                "dealed" : [
                    [
                        {
                            "$minElement" : 1
                        },
                        {
                            "$maxElement" : 1
                        }
                    ]
                ],
                "createTime" : [
                    [
                        {
                            "$maxElement" : 1
                        },
                        {
                            "$minElement" : 1
                        }
                    ]
                ]
            }
        }

1 个答案:

答案 0 :(得分:1)

我不认为其他指数“更好”。似乎两个索引(你建议使用的那个和mongodb使用的索引)都会使用“nscanned:1”返回查询的对象,因此它们对于此查询同样完美。我说因为你的测试数据集中的“weiboAccountID”确切地定义了你正在寻找的那条记录,所以在这种情况下不需要其他索引 - mongodb会选择第一个合适的。尝试使用相同的weiboAccountID添加更多记录(如果重复的ID在您的数据集中完全有效)并重新运行查询,请查看它如何更改执行。