在《权威指南》p68页中,作者提到:通过建立索引{date : -1, user : 1},这样,就可以保证最后几天更新的索引全部保存在内存中,这样,每个人的最新动态都将查询很快。
但是,这样的索引结构对于查询:db.test.find ({"user":1} ).sort("date":-1).limit(n)这个操作来说,问题是很大的。
经过explain测试,要查询上面这个语句,一定要建立索引为 [ (user , 1) , (date,-1) ] ,这样,无论你查询的是哪一个,同步查询多个用户,查询第多少页,都是非常快的。也是stackoverflow上推荐的做法。

索引建立语句:db.test.ensure_index([("user",1),("date",-1)])

而按照书上说的 [ (date,-1) , (user ,1) ]这种方式建立的索引,如果你使用的date精确度很高,就完全是按照date逆序排列的。如果你要查询上面这个语句,它基本就是按date逆序查找,可以想见速度将是非常慢的)
索引建立语句:db.test.ensure_index([("date",-1),("user",1)])
又或者是我查询的方式不对或者应用场景不同呢?可是作者确实说的是查询某一个用户的最新动态啊。。。书上说的尽可能多的将常用数据放在内存中的思想肯定是对的。我猜测,作者说的date应该是指一天,这样,按照查询db.test.find ({"user":1 , "date":xxx )。这样确实是可以的,但是这样的场景不合适啊。现在很少有看到按照日期刷动态的了吧?
联合索引:就是将索引的值直接合并,这样也就解释了为什么我们只能从前缀查询中获得加速。因为按顺序合并后,前缀必然还是有序的。而后缀仅仅是在查询单独的某一个前缀之后再排序,才会获得加速。
比如,我们在'a'&'b'上建立了联合索引,当我们查询a并按照b排序,则实际上我们会是首先仅仅查询a,然后才查询b,

转载于:https://www.cnblogs.com/xiaolongren2012/archive/2012/12/19/2825671.html

mongodb之索引使用小结相关推荐

  1. mongo 唯一约束索引_快速掌握mongoDB(三)——mongoDB的索引详解

    1 mongoDB索引的管理 本节介绍mongoDB中的索引,熟悉mysql/sqlserver等关系型数据库的小伙伴应该都知道索引对优化数据查询的重要性.我们先简单了解一下索引:索引的本质就是一个排 ...

  2. MongoDB 谨防索引seek的效率问题【华为云技术分享】

    目录 背景 初步分析 索引seeks的原因 优化思路 小结 声明:本文同步发表于 MongoDB 中文社区,传送门: http://www.mongoing.com/archives/27310 背景 ...

  3. MongoDB快速上手、windows安装、常用命令、文档基本增删改查、mongoDB的索引

    MongoDB快速上手 目标 理解MongoDB的业务场景.熟悉MongoDB的简介.特点和体系结构.数据类型等. 能够在Windows和Linux下安装和启动MongoDB.图形化管理界面Compa ...

  4. Mongodb的索引操作

    Mongodb的索引操作 1. 为什么mongdb需要创建索引 加快查询速度 进行数据的去重 2. mongodb创建简单的索引方法 语法:db.集合名.ensureIndex({属性:1}),1表示 ...

  5. MongoDB复合索引详解

    摘要: 对于MongoDB的多键查询,创建复合索引可以有效提高性能. 什么是复合索引? 复合索引,即Compound Index,指的是将多个键组合到一起创建索引,这样可以加速匹配多个键的查询.不妨通 ...

  6. MongoDB数据库索引基础知识与实战技巧

    本文内容源自Kyle Banker 的MongoDB In Action一书.主要描述了MongoDB索引相关的一些基础知识和使用技巧. 索引类型 虽然MongoDB的索引在存储结构上都是一样的,但是 ...

  7. Mongodb的索引

    1. 简单介绍 索引是为了加速查询. 假设没有索引,mongodb在查询时会做表扫描,假设集合非常大时,这个查询会非常慢. 一般对创建查询时的键都建立索引. 为排序字段建立索引,假设对未建立索引的字段 ...

  8. 五、MongoDB的索引

    一.MongoDB的下载.安装与部署 二.MongoDB的基础知识简介 三.MongoDB的创建.更新和删除 四.MongoDB的查询 五.MongoDB的索引 1.简介 它就像是一本书的目录,如果没 ...

  9. mongodb及其索引的使用例子

    1.获取某个属性最大的value值并自增范例 因为mongo不支持类似select max操作,也不支持递增int的操作,所以采用目前的方案 #找到符合table_name的记录,find输出时只输出 ...

最新文章

  1. 设计模式-Strategy模式
  2. AUTOCAD自学教程一
  3. Qcon出品全球软件开发者大会北京站-低代码实践与应用
  4. Echarts API说明文档
  5. 物联网串口服务器的功能和作用
  6. win8计算机安全模式,安全模式,详细教您Win8怎么进入安全模式
  7. FreeRTOS任务优先级说明
  8. jQuery学习(五)—课堂实训题专栏
  9. 如果突然多了一笔财富。。
  10. 【存档】20个正则表达式
  11. python爬取京东商品价格教科书中文版_基于Python爬取京东双十一商品价格曲线
  12. 2021.4.18高一模拟赛
  13. splay 模板 洛谷3369
  14. 无线路由器桥接 - 终极完美教程
  15. android系统与苹果手机号码,苹果手机号码怎么导入另一个手机安卓(全程图解其操作流程)...
  16. 我和电赛的成长故事与总结#2019年全国大学生电子设计竞赛#
  17. Excel怎么插入按钮
  18. MySQL审计插件使用和对比
  19. 《Python与硬件项目案例》— 基于Python与指纹模块AS608的指纹识别签到考勤系统(下篇)(期末大作业、课程设计、毕业设计、结课项目)
  20. mysql数据库(3):使用数据库

热门文章

  1. Vue:net::ERR_CONNECTION_REFUSED
  2. 今天来谈谈CSS有哪些布局
  3. 为什么Byte类型的运算结果要用int类型来接收
  4. 职业生涯最差绩效:M-
  5. 支付宝基金收益灰色是什么意思?
  6. 同学孩子上985大学,每月生活费5000元,大家认为合适吗?
  7. 家长工作比较忙,没有什么时间来带孩子,交给家里老人会养成一些坏习惯吗?
  8. 湿气重的人,脸上会有哪些信号?
  9. 社群产品定位三种方式
  10. 年轻人找不到自己喜欢的工作,怎么办?