• 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

  • 相关阅读:
    IDEA与Eclipse
    解释器模式
    设计模式(十一)—— 策略模式
    设计模式(六)—— 装饰模式
    Java注解
    Spring源码阅读(二)—— AOP
    业务开发(八)—— Maven
    高性能MySQL笔记
    Java源码阅读(六)—— ReentrantLock
    业务开发(六)—— MyBatis框架
  • 原文地址:https://www.cnblogs.com/solq/p/2712555.html
Copyright © 2020-2023  润新知