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