备忘mongoDb 索引的一些知识点。

1、索引是用以加速数据库查询的手段,在mongo中主要是采用B树的方式;

2、每个集合最多可增加64个索引,不建议增加过多索引,原因在于一是索引本身占用空间,二由于要维护一个B树的映射,增加索引后,数据库的增删改除了修改数据外,还要修改索引的数据结构,会影响效率;

3、mongo中采用db.user.ensureIndex({"name":1})的方式增加基本索引,1或者-1代表方向,即mongo内部采用什么样的顺序组织数据;

4、唯一索引,db.user.ensureIndex({"name":1},{"unique":true}),表示该索引字段唯一,默认的_id就是;此例中不允许同名;

5、复合唯一索引,db.user.ensureIndex({"name":1,"age":-1},{"unique":true})。此例中不允许同名且同年龄;

备注:当建立复合索引时,如果查询只用到其中一个字段,索引是不起作用的。

6、索引建立在每个数据库的system.indexes集合中,默认有_id索引;

7、索引可以修改,也可以删除,删除命令:db.runcommand({"dropIndexes":"user"},{"indexes":"*"}),删除集合user中全部索引;

备注:_id索引是无法删除的;

8、可以采用explain命令来查询SQL语句的效率,如db.user.find().explain();该命令会返回:

其中millis代表运行时间、cursor代表所使用的索引; 如果什么索引都没用,则显示BasicCursor

mongodb(Index)的更多相关文章

  1. 深入浅出MongoDB(三)环境搭建

    上次的博文深入浅出MongoDB(二)概述中我们已经将MongoDB的相关概念讲解了一下,接下来我们继续进行MongoDB学习.在学习之前,大家首先需要在自己的电脑上安装MongoDB. 1.安装 安 ...

  2. 深入浅出MongoDB(二)概述

    上次的博文深入浅出MongoDB(一)NoSQL中我们已经简单介绍了一下NoSQL的基本概念,这次我们来了解一下MongoDB的相关概念. 1.简介 MongoDB是一款由C++编写的高性能.开源.无 ...

  3. [置顶] 深入浅出MongoDB(三)环境搭建

    上次的博文深入浅出MongoDB(二)概述中我们已经将MongoDB的相关概念讲解了一下,接下来我们继续进行MongoDB学习.在学习之前,大家首先需要在自己的电脑上安装MongoDB. 1.安装 安 ...

  4. 玩转mongodb(九):通过log4jmongo来实现分布式系统的日志统一管理

    背景 在分布式系统中,我们有多个web app,这些web app可能分别部署在不同的物理服务器上,并且有各自的日志输出.当生产问题来临时,很多时候都需要去各个日志文件中查找可能的异常,相当耗费人力. ...

  5. MongoDB(3)--Java 操作 MongoDB 的 API

    引入mongoDb 依赖 <dependency> <groupId>org.mongodb</groupId> <artifactId>mongo-j ...

  6. 《高性能SQL调优精要与案例解析》一书谈主流关系库SQL调优(SQL TUNING或SQL优化)核心机制之——索引(index)

    继<高性能SQL调优精要与案例解析>一书谈SQL调优(SQL TUNING或SQL优化),我们今天就谈谈各主流关系库中,占据SQL调优技术和工作半壁江山的.最重要的核心机制之一——索引(i ...

  7. MongoDB(online) 优化

    MongoDB(online) 优化 1. find.findOne 2. 操作 vip_emp_relation 的一个公共方法 3. 查询记录数 4. save.insert 5. 总结 1. f ...

  8. ylb:SQL 索引(Index)

    ylbtech-SQL Server: SQL Server-SQL 索引(Index) SQL 索引(Index). ylb:索引(Index) 返回顶部 --=================== ...

  9. 修改QList中的item(使用下标([index])才可以获得可修改的item的引用)

    QList算是最常用的集合了,今儿偶然间需要修改QList中的值,结果郁闷了.QList中提供了replace函数来替换item,但不是修改.而at().value()操作均返回的是const的ite ...

随机推荐

  1. POJ 2010 Moo University - Financial Aid treap

    按第一关键字排序后枚举中位数,就变成了判断“左边前K小的和 + 这个中位数 + 右边前K小的和 <= F",其中维护前K小和可以用treap做到. #include <cstdi ...

  2. 游标的使用之压缩数据库Log文件

    declare @databasename nvarchar(100)--定义游标以及赋值 获取所有Online的Database Namedeclare getDataBaseCursor  cur ...

  3. android 很多牛叉布局github地址(转)

    原文地址 http://blog.csdn.net/luo15309823081/article/details/41449929 点击可到达github-------https://github.c ...

  4. 20145229&20145316 《信息安全系统设计基础》实验三 实时系统的移植

    实验封面 实验内容 1.安装ADS(安装文件在00-ads1.2目录下,破解方法00-ads1.2\Crack目录下) 2.安装GIVEIO驱动(安装文件在01-GIVEIO目录下) 3.把整个GIV ...

  5. 1220 - Mysterious Bacteria--LightOj1220 (gcd)

    http://lightoj.com/volume_showproblem.php?problem=1220 题目大意: 给你一个x,求出满足 x=b^p, p最大是几. 分析:x=p1^a1*p2^ ...

  6. html5 canvas绘画时钟

    本示例使用HTML5 canvas,模拟显示了一个时钟, 请使用支持HTML5的浏览器预览效果: HTML部分: <!DOCTYPE html> <html lang="e ...

  7. linux环境下部署tomcat

    服务器环境:Red Hat Enterprise Linux Server release 6.5 安装部署包:apache-tomcat-8.0.30.tar.gz.jdk-8u66-linux-x ...

  8. openoffice

    cmdcd/cd C:\Program Files (x86)\OpenOffice 4\program soffice -headless -accept="socket,host=127 ...

  9. navicat连接虚拟机(centos)中的mysql

    直接上方法: 首先配置CentOS下防火墙iptables规则: # vim /etc/sysconfig/iptables 向其中加入下列规则: -A INPUT -m state –state N ...

  10. Ubuntu下命令行方式对PDF文件进行缩放、合并、拆分

    安装软件: sudo aptitude install ghostscript 然后执行命令: gs -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -dCompatibili ...