MongoDB索引Index

MongoDB索引Index

image-20220607153821645

索引概述

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

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

创建索引

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

语法中 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');

 

posted @   jiang_jiayun  阅读(44)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 清华大学推出第四讲使用 DeepSeek + DeepResearch 让科研像聊天一样简单!
· 实操Deepseek接入个人知识库
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
点击右上角即可分享
微信分享提示