首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >极慢的mongoDB查询

极慢的mongoDB查询
EN

Stack Overflow用户
提问于 2013-06-12 06:05:53
回答 1查看 244关注 0票数 0

我是MongoDB的新手。我已经编写了一个在mongo shell中运行的JS查询。

基本上,我有两张表。这两个网站都有近16万条记录。

我正在检查第一个表,对于每个记录,转到第二个表,看看那里是否存在相应的记录。

代码语言:javascript
复制
pbp = db.poss_pbp.find().batchSize(1000)


while(pbp.hasNext()){

  pbp_temp = pbp.next();
  id = (pbp_temp["poss_idx"]);

  opt_temp = db.poss_opt.find({"poss_idx": id}).count()

  if(opt_temp == 0)
  {
    //Do something
  }
}

查询速度非常慢(每1000条记录大约需要4-5分钟)。我能做些什么来让它更快地工作?关键字"poss_idx“在数据库中有索引。

EN

回答 1

Stack Overflow用户

发布于 2013-06-12 12:30:02

我认为索引有问题。我有两个类似的表: 200,000条记录和大约500,000条。类似的请求在有索引的情况下执行大约40秒,在没有索引的情况下执行很长时间。

运行查询:

代码语言:javascript
复制
 db.poss_opt.find({poss_idx: "some_id"}).explain()

如果上面的查询不能使用索引,您将看到:

代码语言:javascript
复制
 {
     "cursor": "BasicCursor",
     "nscannedObjects": 532543,
     "nscanned": 532543,
     "millis": 712,
     "indexBounds": {},
 }

否则:

代码语言:javascript
复制
 {
     "cursor": "BtreeCursor poss_idx_1",
     "nscannedObjects": 0,
     "nscanned": 0,
     "millis": 0,
     "indexBounds": {"poss_idx": [["some_id", "some_id"]]},
 }

若要查看集合的索引信息,请使用db.poss_opt.stats()db.poss_opt.getIndexes()

如果问题出在索引上,请尝试删除并创建新的索引:

代码语言:javascript
复制
 db.poss_opt.dropIndex({poss_idx: 1})
 db.poss_opt.ensureIndex({poss_idx: 1})

如果您有任何问题,请随时提出。

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

https://stackoverflow.com/questions/17054654

复制
相关文章

相似问题

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