分享

请教检索mongodb效率很慢

vvv1211 发表于 2013-10-17 21:36:40 [显示全部楼层] 回帖奖励 阅读模式 关闭右栏 12 19404

已有(12)人评论

跳转到指定楼层
vvv1211 发表于 2013-10-17 21:37:23

            数据少的话就快了,70000条数据时点一下按钮就检索出来了,数据越多越慢,不知道为什么
        
回复

使用道具 举报

fengyarongaa 发表于 2013-10-17 21:38:23

            我估计现在会mongodb的不多
我也正在研究之中
你去问问一些 大牛们吧
        
回复

使用道具 举报

wokagoka 发表于 2013-10-17 21:39:06

            给条件建立索引
        
回复

使用道具 举报

zoujian911 发表于 2013-10-17 21:39:59

            应该不是mongodb的问题,是不是你的索引的问题,或者你的程序机制问题。反正我这边查询上千万的数据也仅仅就几秒而已。
        
回复

使用道具 举报

tiger435 发表于 2013-10-17 21:40:39

            索引的问题,我测试过100万条数据,不建立索引或索引有问题,查询需要3-5秒,索引正常0.1秒就能有结果
        
回复

使用道具 举报

robotta 发表于 2013-10-17 21:41:30

            正常情况下,mongodb在查询100W条的数据速度应该是0.2左右,然后数据越多,查询到最后就越慢。。CPU,内存等占据越高,到最后基本上内存和CPU都占满之后会比较的满,大概是1秒钟5千到2万条左右
        
回复

使用道具 举报

ielnvnh 发表于 2013-10-17 21:42:19

            不仅是查询条件的索引问题,而且你还要在建立索引同时建立索引排序,不要在查询的时候去排序!!!!不知.net可不可以这样建索引:coll.MetaData.CreateIndex(new   Document()   {   {   "code ",   1   }   },   false).Ascending();
不过,不管是什么语言,你都可以直接在mongodb下输入命令行来测试,以下的mongodb命令行下的测试:
> db.test.find({h:/code/}).explain()
{
        "cursor" : "BtreeCursor h_-1 multi",
        "isMultiKey" : false,
        "n" : 938,
        "nscannedObjects" : 938,
        "nscanned" : 136348,
        "nscannedObjectsAllPlans" : 938,
        "nscannedAllPlans" : 136348,
        "scanAndOrder" : false,
        "indexOnly" : false,
        "nYields" : 0,
        "nChunkSkips" : 0,
        "millis" : 244,
        "indexBounds" : {
                "h" : [
                        [
                                /code/,
                                /code/
                        ],
                        [
                                {
                                       
                                },
                                ""
                        ]
                ]
        },
        "server" : "test:27017"
}
说明:集合test有136348条数据,使用正则查h字段,查到有匹配938条数据,"millis" : 244,表示所花时间为244毫秒,“indexBounds”表示所用索引为"/code/","scanAndOrder" : false,表示没有进行排序,是因为我在写索引的时候已经排序好了,如果它为true,那么所花时间将更多。由于我使用的是正则查询,要遍历集合一遍,所花时间肯定比较长,但如果你只是在100万条数据里查一个匹配:db.test.find({'h':'code'}).explain(),所花时间为0.
        
回复

使用道具 举报

boYwell 发表于 2013-10-17 21:43:08

            你这个和连接池木有关系呀,一次查询就卡成这样
1,建立索引
2,MongoDB的查询高性能是建立在大内存基础上
        
回复

使用道具 举报

destruction666 发表于 2013-10-17 21:43:46

            http://www.cnblogs.com/lovecindywang/archive/2011/03/02/1969324.html
        
回复

使用道具 举报

12下一页
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条