数据库-mongodb-索引
1.索引提高查询速度,降低写入速度,权衡常用的查询字段,不必在太多列上建立索引
查看查询命令
|
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-索引的更多相关文章
- MongoDB索引的使用
Table of Contents 1. 基本索引 2. 联合索引 3. 索引类型 4. 索引管理 1 基本索引 在数据库开发中索引是非常重要的,对于检索速度,执行效率有很大的影响.本 文主要描述了M ...
- MongoDB索引介绍
MongoDB中的索引其实类似于关系型数据库,都是为了提高查询和排序的效率的,并且实现原理也基本一致.由于集合中的键(字段)可以是普通数据类型,也可以是子文档.MongoDB可以在各种类型的键上创建索 ...
- MongoDB(索引及C#如何操作MongoDB)(转载)
MongoDB(索引及C如何操作MongoDB) 索引总概况 db.test.ensureIndex({"username":1})//创建索引 db.test.ensureInd ...
- 使用.Net+非关系型数据库MongoDB 实现LBS商家按距离排序_按离我最近排序
.Net MongoDB LBS地理位置定位 开发过程,实现商家按距离排序 前言: 在使用美团点外卖,看电影,找好吃的时候,经常会注意到软件有一个按距离排序,找离我最近的商家,心中有一些疑问,.Net ...
- 数据库MongoDB
一.MongoDB简介 MongoDB是由c++语言编写的,是一个基于分布式文件存储的开源数据库系统,在高负载的情况下,添加更多的节点,可以保证服务器性能.MongoDB旨在为web应用提供扩展的高性 ...
- 数据库——MongoDB
what's the MongoDB MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的.他支持的数据结构非常松散,是类似json的bson格式 ...
- MongoDB索引的种类与使用
一:索引的种类 1:_id索引:是绝大多数集合默认建立的索引,对于每个插入的数据,MongoDB都会自动生成一条唯一的_id字段2:单键索引: 1.单键索引是最普通的索引 2.与_id索引不同,单键索 ...
- MongoDB索引原理
转自:http://www.mongoing.com/archives/2797 为什么需要索引? 当你抱怨MongoDB集合查询效率低的时候,可能你就需要考虑使用索引了,为了方便后续介绍,先科普下M ...
- MongoDB · 引擎特性 · MongoDB索引原理
MongoDB · 引擎特性 · MongoDB索引原理数据库内核月报原文链接 http://mysql.taobao.org/monthly/2018/09/06/ 为什么需要索引?当你抱怨Mong ...
- MongoDB索引管理
一.创建索引 创建索引使用db.collectionName.ensureIndex(...)方法进行创建: 语法: >db.COLLECTION_NAME.ensureIndex({KEY:1 ...
随机推荐
- elasticsearch插件开发
检索引擎Elasticsearch支持插件模式.有些时候你可能须要安装一些插件.甚至自己开发插件,这里就提供一个開始ES插件开发演示样例,ES版本号为1.5.2. 一.插件类继承自org.elasti ...
- Android进程回收机制LMK(Low Memory Killer)【转】
本文转载自:http://www.cnblogs.com/wytiger/p/5744752.html 熟悉Android系统的童鞋都知道,系统出于体验和性能上的考虑,app在退到后台时系统并不会真正 ...
- javascript设计模式-掺元类
有一种重用代码的方法不需要用到严格的继承.如果想把一个函数用到多个类中,可以通过扩充的方式让这些类共享该函数.其实际做法大大体为:先创建一个包含各种通用方法的类,然后再用它扩充其他的类.这种方式就叫做 ...
- 使用NPOI实现简单的Excel导出功能
[1]NPOI是啥? NPOI是指构建在POI 3.x版本之上的一个程序,NPOI可以在没有安装Office的情况下对Word或Excel文档进行读写操作. POI是一个开源的Java读写Excel. ...
- Docker installs
docker要求系统内核必须在3.10以上uname -r 命令查看你当前的内核版本 1.更新yum源并删除旧版docker yum remove docker docker-common docke ...
- VS2015启动显示无法访问此网站
之前启动项目发生过几次,也忘了怎么解决了,今天记录一下:将应用文件夹下的vs目录删除,重新生成解决方案后,程序正常启动. 原文链接:https://blog.csdn.net/upi2u/articl ...
- 4.Projects and Scenes介绍
1.Project 一个项目是由一系列的文件(如图片.音频.几何).场景以及vzp文件组成.这些文件被导入到项目对应的文件夹中.项目外部资源在场景中被使用后,会导入项目中,除非该资源被标记为外部引用. ...
- 2.Ventuz Designer常用工具介绍
Ventuz Designer常用工具介绍 1. 打开Ventuz Designer 图1.1 2. Ventuz Designer第一个界面 图2.1 Recent Projects:最近创建的 ...
- Vim常用又容易忘的命令
一篇讲的不错的教程 :noh 取消搜索高亮 x 删当前光标所在的一个字符. :wq 存盘 + 退出 dd 删除当前行,并把删除的行存到剪贴板里 p 粘贴剪贴板 a → 在光标后插入 /pattern ...
- 得到Xml中 元素的值
<?xml version="1.0" encoding="utf-8" ?><Response service="RouteSer ...