1.索引提高查询速度,降低写入速度,权衡常用的查询字段,不必在太多列上建立索引

2.在mongodb中,索引可以按字段升序、降序来创建,便于排序
3.默认是使用btree 来组织索引文件,2.4版以后,也允许建立hash索引

查看查询命令

1
db.stu.find().explain();

结果中的

"cursor":"BasicCursor",  -------如果是基本的游标,说明没有索引发生作用

"nscannedObjects":1000--------理论上要扫描多少航

加上索引后会变成  "cursor": " BtreeCursor"

索引类型

1.单列索引

2.多列索引     SQL中的where一次查询多个数值的时候,使用多列索引的效率高

3.子文档索引

索引性质

1.普通索引

2.唯一索引

3.稀疏索引

如果针对field做索引,针对不含field列的文档,将不建立索引,而普通索引会将field列的值认为是null,并建立索引,适用于小部分文档含有某列时

1
2
db.collection.ensureIndex({field:1},{sparse:true });
// 在这个例子中,不会对filed为null的文档建立索引,也就是说,find找不到field为null的文档了
1
db.collection.find({email:null}); // 普通索引可以查到,稀疏索引查不到

4.哈希索引

1
2
3
db.foo.insert([{title:'hello'},{title:'world'}]);
db.foo.ensureIndex({title:'hashed'});
db.foo.find({title:'hello'});

对范围查询支持的不够好

在机械硬盘上的执行速度慢,在SSD或者内存上的执行速度快

创建多列索引

1
db.stu.ensureIndex({fielda:1,fieldb:-1);  // fielda正序索引,fieldb逆序索引

创建子文档索引

1
db.collection.ensureIndex({field.subfield:1});

创建唯一索引

1
db.collection.ensureIndex({field:1},{unique:true});

删除单个索引

1
db.collection.dropIndex({field:1});

删除所有索引

1
db.collection.dropIndexes();

查看当前的索引有哪些

1
db.stu.getIndexes();

重建索引

一个表经过很多次修改后导致表的文件产生空洞,索引文件也是这样,

可以通过索引的重建来提高索引效率,减少索引文件碎片。类似mysql中的optimize表

1
db.collection.reIndex();

这个命令是不是重建所有该collection中的索引?

数据库-mongodb-索引的更多相关文章

  1. MongoDB索引的使用

    Table of Contents 1. 基本索引 2. 联合索引 3. 索引类型 4. 索引管理 1 基本索引 在数据库开发中索引是非常重要的,对于检索速度,执行效率有很大的影响.本 文主要描述了M ...

  2. MongoDB索引介绍

    MongoDB中的索引其实类似于关系型数据库,都是为了提高查询和排序的效率的,并且实现原理也基本一致.由于集合中的键(字段)可以是普通数据类型,也可以是子文档.MongoDB可以在各种类型的键上创建索 ...

  3. MongoDB(索引及C#如何操作MongoDB)(转载)

    MongoDB(索引及C如何操作MongoDB) 索引总概况 db.test.ensureIndex({"username":1})//创建索引 db.test.ensureInd ...

  4. 使用.Net+非关系型数据库MongoDB 实现LBS商家按距离排序_按离我最近排序

    .Net MongoDB LBS地理位置定位 开发过程,实现商家按距离排序 前言: 在使用美团点外卖,看电影,找好吃的时候,经常会注意到软件有一个按距离排序,找离我最近的商家,心中有一些疑问,.Net ...

  5. 数据库MongoDB

    一.MongoDB简介 MongoDB是由c++语言编写的,是一个基于分布式文件存储的开源数据库系统,在高负载的情况下,添加更多的节点,可以保证服务器性能.MongoDB旨在为web应用提供扩展的高性 ...

  6. 数据库——MongoDB

    what's the MongoDB MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的.他支持的数据结构非常松散,是类似json的bson格式 ...

  7. MongoDB索引的种类与使用

    一:索引的种类 1:_id索引:是绝大多数集合默认建立的索引,对于每个插入的数据,MongoDB都会自动生成一条唯一的_id字段2:单键索引: 1.单键索引是最普通的索引 2.与_id索引不同,单键索 ...

  8. MongoDB索引原理

    转自:http://www.mongoing.com/archives/2797 为什么需要索引? 当你抱怨MongoDB集合查询效率低的时候,可能你就需要考虑使用索引了,为了方便后续介绍,先科普下M ...

  9. MongoDB · 引擎特性 · MongoDB索引原理

    MongoDB · 引擎特性 · MongoDB索引原理数据库内核月报原文链接 http://mysql.taobao.org/monthly/2018/09/06/ 为什么需要索引?当你抱怨Mong ...

  10. MongoDB索引管理

    一.创建索引 创建索引使用db.collectionName.ensureIndex(...)方法进行创建: 语法: >db.COLLECTION_NAME.ensureIndex({KEY:1 ...

随机推荐

  1. 编程算法 - 数组中的逆序对 代码(C)

    数组中的逆序对 代码(C) 本文地址: http://blog.csdn.net/caroline_wendy 题目: 在数组中的两个数字假设前面一个数字大于后面的数字, 则这两个数字组成一个逆序对. ...

  2. Java异常的捕获与处理

    Java提供了try(尝试).catch(捕捉).finally(最终)这三个关键字来处理异常.在处理各种异常时,需要用到对应的异常类,指的是由程序抛出的对象所属的类. 一.异常处理的使用 由于fin ...

  3. PHP独立操作符

    & 与 ^ 位逻辑异或 $ # ! 逻辑或 ~  按位取反

  4. Jetty:部署到Jetty

    Web应用的框架 标准Jetty公布版本号能部署标准servlet Spec Web应用和Jetty内部ContextHandler部署描写叙述符,或者两者的一个混合. Web应用是可部署的动态(se ...

  5. Github 协同开发

    ithub开发流程 Github的流程.也就是: 开发者各自fork项目的repo到自己Github账户下 每次开发同步到项目的repo然后再进行开发 push自己的开发分支到自己Github账户下面 ...

  6. 利用SharedPreferences完成记住账号密码的功能

    利用SharedPreferences完成记住账号密码的功能 效果图: 记住密码后,再次登录就会出现账号密码,否则没有. 分析: SharedPreferences可将数据存储到本地的配置文件中 Sh ...

  7. golang 初体验

    1.下载golang https://code.google.com/p/go/downloads/list 在windows下安装,下载windows32版本 2.安装 安装完毕,默认在C:\Go ...

  8. ettercap + driftnet 实现同网段下流量欺骗

    前言: 由于在局域网中,网关会不断地发送 ARP 数据包询问当前是否有新的客户端上线,如果我们可以欺骗当前局域网网段下的主机, 把我们当成网关地址,并且我们把欺骗的流量转发到真正的网关地址,这样我们就 ...

  9. map使用

    // map使用 1 #include <iostream> #include "insertVal.h" #include "sort.h" us ...

  10. (转) 50个CSS技巧

    这里我工作中收集了10个很不错的CSS技巧,你可以用在你的项目上.它可以帮你很好地整理你的元素并让他们看起来蛮酷的.下面开始我们的内容,希望你会喜欢它.下面是我收集的CSS技巧,希望能帮助到你,感觉收 ...