mongodb 查询少少优化

print(db.player.count())

var startDate=new Date();

//db.player.find().limit(10).skip((db.player.count()-5*10)).forEach(printResult); 

//db.player.find({"_id":{$gt:4999956}}).limit(10).forEach(printResult);            

db.player.find({"name":"solq_7"}).limit(10).skip(10).sort.forEach(printResult);

//db.player.ensureIndex({name:1});

print(new Date()-startDate);

function printResult (r) {
  print(tojson(r))
}

/* var id=5000001;
for(var i=0;i<1000;i++)
{
    db.player.insert({
        "_id":id,
        "_class" : "org.solq.entity.Player",
        "name":"solq_7"
    });
    id++;
} */
//http://www.mongodb.org/display/DOCS/Scripting+the+shell

//api
//http://docs.mongodb.org/manual/reference/javascript/

 

第一个查询 没加索引 五百万数据差不多要三秒

db.player.find().limit(10).skip((db.player.count()-5*10)).forEach(printResult); 

第二个查询 没加索引 90毫秒左右

db.player.find({"_id":{$gt:4999956}}).limit(10).forEach(printResult);

第三个查询 没加索引 7秒左右

db.player.find({"name":"solq_7"}).limit(10).skip(10).sort.forEach(printResult);

第四个查询 加索引 40毫秒左右

db.player.find({"name":"solq_7"}).limit(10).skip(10).sort.forEach(printResult);

添加索引 五百万数据用了差不多三分钟

db.player.ensureIndex({name:1});

 

小结一下:

1:加索引查询明显快了200多倍,,,哈哈

2:至少加个 key 条件查询,总比没加条件快很多,如 $gt $lt. 我认为每个结构应该加个 createTime 

 

运行

>mongo.exe shell.js

posted @ 2012-10-05 21:53  solq  阅读(701)  评论(0编辑  收藏  举报