数据库-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 ...
随机推荐
- PHP自己定义函数及数组
个人原创博客:http://www.phpthinking.com/archives/350 一.自己定义函数 自己定义函数就是我们自己定义的函数.在PHP中自己定义函数格式例如以下: 1 funct ...
- VS2013 EF6连接MySql
1.安装mysql server下载地址 http://cdn.mysql.com/Downloads/MySQL-5.6/mysql-5.6.21-winx64.zip 2.安装MySql的VS插件 ...
- c22---枚举
// // main.c // 枚举基本概念 #include <stdio.h> int main(int argc, const char * argv[]) { // int sex ...
- java+appium+安卓模拟器实现app自动化Demo
网上有比较多相关教程,自己写一遍,加深下印象. 环境搭建 据说,很多人都被繁琐的环境搭建给吓到了. 是的,确实,繁琐. node.js 网址 cmd输入node -v,出现下图说明成功. JDK 网址 ...
- ubuntu刚安装好之后apt-get使用异常
gaozhang 刚安装好之后,想执行apt-get update 任务,出现以下错误提示 提示说明apt正在执行,我们就野蛮的将apt进程杀.死即可,不过有点多,一个个kill 执行完之后再 ...
- 26. Remove Duplicates from Sorted Array[E]删除排序数组中的重复项
题目 Given a sorted array nums, remove the duplicates in-place such that each element appear only once ...
- BPM使用ligerUI实现主从表显示
先看一下效果图: 界面有待美化,嘿嘿,下面说一下实现过程,当然,我的代码可能不对,就比如后台给前端返回JSON对象,应该包括状态和消息和数据,我这里直接给返回了JSON对象,所以,如果有大神,您知道怎 ...
- SQLServer 行转列,统计,二次分组
create table test ( bizdate datetime, --日期 classes varchar(50), --班次 '白班' 或 '夜班' qty int --产量 ...
- HTML与CCS(十一)
1.1 HTML介绍 1.1.1 Web服务本质 import socket sk = socket.socket() sk.bind(("127.0.0.1", 8080)) s ...
- ACM 手机短号问题
手机短号 Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Description ...