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. 列出查询慢的语句;

  • 相关阅读:
    JAVA类与对象(一)----基础概念理解
    JAVA数组
    JAVA算术运算符、关系运算符和位运算符
    JAVA数据类型
    JAVA配置环境变量
    C#中怎么生成36位的GUID
    jqAjax
    二进制1的个数
    成绩转换
    对决
  • 原文地址:https://www.cnblogs.com/guochunyi/p/5849783.html
Copyright © 2011-2022 走看看