参考原文: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. 列出查询慢的语句;

mongo语句优化分析的更多相关文章

  1. 看懂SqlServer查询计划 SQL语句优化分析

    转自 http://www.cnblogs.com/fish-li/archive/2011/06/06/2073626.html 阅读目录 开始 SQL Server 查找记录的方法 SQL Ser ...

  2. SQL语句优化分析

    分析比较执行时间计划读取情况 select * from dbo.Product 执行上面语句一般情况下只给你返回结果和执行行数,那么你怎么分析呢,怎么知道优化之后跟没有优化的区别呢. 下面几种方法: ...

  3. 戈多编程-小谈sql语句的优化分析

    在sqlserver大数据查询中,避免不了查询效率减慢,暂且抛弃硬件原因和版本原因,仅从sql语句角度分析. 一. sql 语句性能不达标,主要原因有一下几点: 1. 未建索引,检索导致全表扫描 2. ...

  4. SQL SERVER 查询性能优化——分析事务与锁(五)

    SQL SERVER 查询性能优化——分析事务与锁(一) SQL SERVER 查询性能优化——分析事务与锁(二) SQL SERVER 查询性能优化——分析事务与锁(三) 上接SQL SERVER ...

  5. 优化数据库的方法及SQL语句优化的原则

    优化数据库的方法: 1.关键字段建立索引. 2.使用存储过程,它使SQL变得更加灵活和高效. 3.备份数据库和清除垃圾数据. 4.SQL语句语法的优化.(可以用Sybase的SQL Expert,可惜 ...

  6. php代码优化,mysql语句优化,面试需要用到的

    首先说个问题,就是这些所谓的优化其实代码标准化的建议,其实真算不上什么正真意义上的优化,还有一点需要指出的为了一丁点的性能优化,甚至在代码上的在一次请求上性能提升万分之一的所谓就去大面积改变代码习惯, ...

  7. 数据库性能调优——sql语句优化(转载及整理) —— 篇1

    一.问题的提出                    在应用系统开发初期,由于开发数据库数据比较少,对于查询SQL语句,复杂视图的的编写等体会不出SQL语句各种写法的性能优劣,但是如果将应用系统提交实 ...

  8. 数据库性能优化之SQL语句优化

    一.问题的提出 在应用系统开发初期,由于开发数据库数据比较少,对于查询SQL语句,复杂视图的编写等是体会不出SQL语句各种写法的性能优劣,但是如果将应用系统提交实际应用后,随着数据库中数据的增加,系统 ...

  9. MYSQL查询语句优化

    mysql的性能优化包罗甚广: 索引优化,查询优化,查询缓存,服务器设置优化,操作系统和硬件优化,应用层面优化(web服务器,缓存)等等.这里的记录的优化技巧更适用于开发人员,都是从网络上收集和自己整 ...

随机推荐

  1. Linux QtCreator设置mingw编译器生成windows程序

    Qt跨平台,那必须在Linux平台编译一个可以在windows下运行的Qt程序才行,当然还得和QtCreator环境弄在一起才行. 工作环境:Centos 7 yum install qt5-qt* ...

  2. GIT 在本地保存账户和密码

    原文链接:http://www.jianshu.com/p/908591004f3b 解决方法,在本地的工程文件夹的.git下打开config文件 添加: [credential] helper = ...

  3. html5头部说明

    <!DOCTYPE html> <!-- 使用 HTML5 doctype,不区分大小写 --><html lang="zh-cmn-Hans"> ...

  4. route命令(转)

    Linux系统的route命令用于显示和操作IP路由表(show / manipulate the IP routing table).要实现两个不同的子网之间的通信,需要一台连接两个网络的路由器,或 ...

  5. Metro之Popup控件的使用(登录)

    最终实现效果如下: 添加用户控件LoginPage.xaml,前台代码 <Popup x:Name="LoginPopup" Width="{Binding Ele ...

  6. java中清空session

    session.removeAttribute("sessionname")是清除SESSION里的某个属性.     session.invalidate()是让SESSION失 ...

  7. loadView在App启动时到底都干了些什么?

    loadView在App启动时到底都干了些什么? 查阅苹果官方文档如下: 1. 当你访问一个ViewController的view属性时,如果此时view的值是nil,那么,ViewControlle ...

  8. Android --MainActivity模板

    系统自带的NavigationDrawerFragment 1.自动生成NavigationDrawerFragment,onCreatView代码如下 @Override public View o ...

  9. Oracle数据库之SQL基础(一)

    主要内容:用户与表空间:表与约束:查询语句. 一.概述 Oracle安装:访问官网,下载 二.用户与表空间 在安装Oracle时在开始菜单里可以用sql puls登录oracle. ★1.系统用户 s ...

  10. python 上传下载文件

    server.py #!/usr/bin/env python # -*- coding:utf- -*- import SocketServer import os class MySocketSe ...