首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用mongodb进行索引:性能不佳/ indexOnly=false

使用mongodb进行索引:性能不佳/ indexOnly=false
EN

Stack Overflow用户
提问于 2012-09-01 16:30:23
回答 1查看 2.8K关注 0票数 2

我在一台8 8GB的linux机器上运行了一个mongodb。目前它处于测试模式,所以几乎没有其他的请求进来。

我有一个收藏项目,里面有一百万个文档。我在以下字段上创建了一个索引: PeerGroup和CategoryIds (这是一个由3-6个元素组成的数组,将在多个键中生成):db.items.ensureIndex({PeerGroup:1, CategoryIds:1}

当我查询的时候

代码语言:javascript
复制
db.items.find({"CategoryIds" : new BinData(3,"xqScEqwPiEOjQg7tzs6PHA=="), "PeerGroup" : "anonymous"}).explain()

我得到了以下结果:

代码语言:javascript
复制
{
    "cursor" : "BtreeCursor PeerGroup_1_CategoryIds_1",
    "isMultiKey" : true,
    "n" : 203944,
    "nscannedObjects" : 203944,
    "nscanned" : 203944,
    "nscannedObjectsAllPlans" : 203944,
    "nscannedAllPlans" : 203944,
    "scanAndOrder" : false,
    "indexOnly" : false,
    "nYields" : 1,
    "nChunkSkips" : 0,
    "millis" : 680,
    "indexBounds" : {
            "PeerGroup" : [
                    [
                            "anonymous",
                            "anonymous"
                    ]
            ],
            "CategoryIds" : [
                    [
                            BinData(3,"BXzpwVQozECLaPkJy26t6Q=="),
                            BinData(3,"BXzpwVQozECLaPkJy26t6Q==")
                    ]
            ]
    },
    "server" : "db02:27017"

}

我认为680ms并不是很快。或者这是可以接受的?另外,为什么它说"indexOnly:false“?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-09-01 20:40:10

,我认为680ms不是很快。或者这是可以接受的?

这取决于这些对象有多大,以及这是否是第一次运行。假设您返回的整个数据集(包括索引)都适合内存,那么下次您运行它时,它将是内存中的查询,然后将以尽可能快的速度返回。nscanned是高的,这意味着这个查询不是很有选择性,大多数记录在PeerGroup中都会有一个“匿名”值吗?如果是这样,并且CategoryId更有选择性,那么您可以在{CategoryIds:1, PeerGroup:1}上尝试一个索引(使用hint()来尝试一个索引而不是另一个)。

另外,为什么它会说“

:false”

这仅仅表明您希望返回的所有字段都不在索引中,而BtreeCursor则表明该索引已用于查询( BasicCursor将意味着它没有被使用)。要使这成为一个indexOnly查询,您需要在projection中只返回索引中的两个字段(即:{_id : 0, PeerGroup:1, CategoryIds:1})。这意味着它永远不需要接触数据本身,并且可以单独从索引返回所需的所有内容。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12226205

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档