首页 > 数据库 >MongoDB索引Index

MongoDB索引Index

时间:2023-06-29 20:26:18浏览次数:58  
标签:Index name 索引 MongoDB db person createIndex

MongoDB索引Index

image-20220607153821645

索引概述

索引通常能够极大的提高查询的效率,如果没有索引,MongoDB在读取数据时必须扫描集合中的每个文件并选取那些符合查询条件的记录

这种扫描全集合的查询效率是非常低的,特别在处理大量的数据时,查询可以要花费几十秒甚至几分钟,这对应用的性能是非常致命的

创建索引

MongoDB使用 createIndex() 方法来创建索引

db.集合名.createIndex(keys, options)

语法中 Key 值为要创建的索引字段,1 为指定按升序创建索引,如果想按降序来创建索引指定为 -1 即可

注意

  • 在 3.0.0 版本前创建索引方法为 db.collection.ensureIndex(),之后的版本使用了 db.collection.createIndex() 方法,ensureIndex() 还能用,但只是 createIndex() 的别名
  • MongoDB默认所有的集合在_id字段上有一个索引。

样例

db.person.createIndex({"name":1})

索引的查看

默认情况下_id是集合的索引,查看方式:

db.集合名.getIndexes()

删除索引

语法

db.集合名.dropIndex({'索引名称':1})

样例

db.person.dropIndex({name:1})
db.person.getIndexes()

检测索引的速度优势

测试:插入10万条数据到数据库中

插入数据:

for(i=0;i<100000;i++){db.t1.insert({name:'test'+i,age:i})}

创建索引前:

db.t1.find({name:'test10000'})
db.t1.find({name:'test10000'}).explain('executionStats') # 显示查询操作的详细信息

创建索引:

db.t1.creatIndexIndex({name:1})

创建索引后:

db.t1.find({name:'test10000'}).explain('executionStats')

//////////////////////

//创建索引
db.person.createIndex({'name':1});
//查看索引
db.person.getIndexes();
//删除索引
db.person.dropIndex({'name':1});

//测试索引可以提高搜索速度
for(i=0;i<10000;i++){
	db.t1.insert({'name':'test'+i,'age':i})
};

db.t1.find();

db.t1.find({'name':'test999'}).explain('executionStats');
db.t1.getIndexes();
db.t1.createIndex({'name':1});
db.t1.getIndexes();
db.t1.find({'name':'test999'}).explain('executionStats');

 

标签:Index,name,索引,MongoDB,db,person,createIndex
From: https://www.cnblogs.com/jiangjiayun/p/17515080.html

相关文章

  • MongoDB聚合操作之排序、分页
    聚合操作之排序、分页管道命令之$sort$sort用于将输入的文档排序后输出使用示例如下:查询人物,按照年龄升序db.person.aggregate([{$sort:{age:1}}])查询每个国家的人数,并排序db.person.aggregate([{$group:{_id:"$country",counter:{$sum:1}}},{$sort:{count......
  • 问题记录:IDEA工程卡在Updating indexes一直加载
    https://blog.csdn.net/JyuSun/article/details/126401031?spm=1001.2101.3001.6650.5&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-5-126401031-blog-128690534.235%5Ev38%5Epc_relevant_sort&depth_1-utm_source=distribute.pc......
  • MongoDB聚合操作之分组、过滤
    聚合操作之分组、过滤MongoDB中聚合(aggregate)主要用于处理多个文档(诸如统计平均值,求和等),并返回计算后的数据结果。对多个文档进行分组对分组的文档执行操作并返回单个结果分析数据变化语法:db.集合名称.aggregate([{管道:{表达式}}])管道命令之$group按照某个字段......
  • 10 | MySQL为什么有时候会选错索引?
    以下内容出自《MySQL实战45讲》10|MySQL为什么有时候会选错索引?优化器的逻辑选择索引是优化器的工作。影响优化器选择的判断标准:扫描行数临时表是否排序扫描行数MySQL在真正执行语句之前,会根据统计信息来估算记录数。这个统计信息就是索引的“区分度“。显然,......
  • MongoDB删除文档
    删除文档编写语法为db.集合名.函数名()函数名含义remove( <query>)参数query:匹配符合的删除条件数据deleteOne( <query>)更新一条数据deleteMany( <query>)更新多条数据样例删除集合所有文档db.集合名.deleteMany({})删除指定条件的文档db.集......
  • MongoDB数据的更新
    数据的更新编写语法为db.集合名.函数名()函数名含义update( <query>, <update> ,{multi:<boolean>})参数query:查询条件,类似sql语句update中where部分参数update:更新操作符,类似sql语句update中set部分参数multi:可选,默认是false,表示只更新找到的第一条记录,值为tr......
  • gdb.exe: warning: Couldn't determine a path for the index cache directory.
    GDB调试中出现的警告D:\\gitee\\luatos-soc-2022\\out\\example_copy>arm-none-eabi-gdbexample.elfC:\\SysGCC\\bin\\arm-none-eabi-gdb.exe:warning:**Couldn'tdetermineapathfortheindexcachedirectory.......
  • MongoDB数据的增加
    数据的增加MongoDB将文档存储在集合中。集合类似于关系数据库中的表。如果集合不存在,MongoDB会在首次存储该集合的数据时创建该集合。编写语法为db.集合名.函数名()函数名含义save()保存文档。文档不存在时,新创建一个文档;文档存在,更新文档insert()插入......
  • java联合索引(复合索引)的好处包括:
    联合索引(复合索引)的好处包括:支持多列查询:联合索引可以用于满足多个列的查询条件,避免了在多个单列索引之间的多次查找和合并。覆盖索引优化:如果联合索引包含了查询需要的所有列,即成为覆盖索引,可以避免回表操作,减少IO开销,提高查询性能。有序性优势:联合索引的顺序可以影响查询的性能。......
  • JS中字符串28种常用API总结,substring、slice、JSON.stringify、match、split、search
    一、引言在前端开发中,处理字符串是一项常见的任务。JavaScript提供了一系列的字符串API,用于操作和处理字符串数据。字符串常用的API方法有很多,包括查找字符串、截取字符串、替换字符串、分割字符串、大小写转换、字符串拼接和字符串比较等等。本文将介绍一些常用的字符串API......