zoukankan      html  css  js  c++  java
  • mongo语句优化分析

    参考原文:http://www.mongoing.com/eshu_explain3

    理想的查询状态由以下两种

      普通查询:

      nReturned=totalKeysExamined & totalDocsExamined=0

      (cover index,仅仅使用到了index,无需文档扫描,这是最理想状态。)

      或者

      nReturned=totalKeysExamined=totalDocsExamined(需要具体情况具体分析)

      (正常index利用,无多余index扫描与文档扫描。)

         sort大数据的时候,为了使得sort不在内存中进行

      totalKeysExamined > nReturned=totalDocsExamined 

    备注:很多时候改变索引的顺序可以极大的增加查询效率。可以通过explain()来查看执行语句的上面三个数值。

    举例:

    集合tmp:数据量:2000万

    包含字段 long a, enum b, int c

    db.tmp.find({ "c" : 181 , "b" : "bType", "a" : { "$gte" : 1473139260000 , "$lte" : 1473225660000})

    每一个单独建索引只会使用单个索引。且totalDocsExamined远大于其它两个值

    考虑建立多条索引:因为c和b的数目相对较少,因此将b和c放索引前面。a放最后。

    可以得到nReturned=totalKeysExamined & totalDocsExamined=0 

    项目优化mongo步骤

    1. 列出原始日志表与统计表;
    2. 列出每个表的查询条件;
    3. 列出每个表的索引;
    4. 列出查询慢的语句;

  • 相关阅读:
    BZOJ1054|HAOI2008移动玩具|广搜
    tarjan算法
    BJOJ2190|SDOI仪仗队|数论
    POJ2975|Nim|博弈论
    POJ1740|A NEW STONE GAME|博弈论
    python 单例模式
    linux 根据服务名称批量杀死进程
    python 任务计划
    python偏函数
    安装scrapy框架
  • 原文地址:https://www.cnblogs.com/guochunyi/p/5849783.html
Copyright © 2011-2022 走看看