mongodb中的索引二

原创 2016年08月29日 13:53:22

通常mongodb中的索引的创建方式如下:
{sortkey:1querycriteria:1}
这种方式下,已经排好顺序了,所以只要在排好序的key中找满足查询条件的记录即可,需要扫描的数据量比较大,还有一种索引的创建方式:
{querycriteria:1,sortkey:1}这种创建的方式中,不需要扫描很多的记录,在索引中查找满足条件的记录,但是需要在内存中排序,如果满足记录的条件很多,就要消耗很多的时间去排序,可能会很慢,通常查询是带limit的,所以第一种方式可能也无需扫描太多的记录就能返回正常的记录,可能效率可能会更高。
explan输出中scanandsort代表了,索引查找后,在内存中有排序操作
nscannedobject代表的是根据索引的指针去实际查找对象的数量
nscanned代表扫描索引条目数量
indexonly是否只用索引就返回了满足的查询,无需在回表操作
n代表返回的文档数量
nyields代表为了让写操作顺利进行,本次查询暂停的次数
allplans代表的是本次查询尝试的每个查询计划
可以使用hint提示使用哪种索引
如果只是单键值的查询,那么升序降序是不太紧要的,mongodb可以利用同一个索引顺序或逆序的遍历,索引键只需要在复合索引上使用。
hint使用方式
db.c.find({“age”:14,”username”:/*/}).hint(“username”:1,”age”:1})
创建唯一索引
db.user.createindex({“username”:1},{“unique”:true})
大于8KB的字段是不会被添加到索引中的,创建索引的时候也不会有任何提示
在创建索引的时候,可以指定索引名称,默认是索引字段的组合,当索引字段过多的时候会出现问题
db.user.createindex({“username”:1},{“name”:”idx_test})
mongodb中创建索引会阻塞读写,这个操作要慎重了,可以指定background选项,但是仍会有很大的影响

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

mongodb调优那些事(二)-索引

集合作用是存储采集的信息,字段包括发布日期pubDate(int型)、分值score(int型)、发布时间pubTime(date型)、相似数量simNum(int型)、是否垃圾isRub(int型)...

二、MongoDB的高级查询(聚合、游标、管道、索引)

MongoDB中聚合(aggregate)主要用于处理数据(诸如统计平均值,求和等),并返回计算后的数据结果。有点类似sql语句中的 count(*)。 一、聚合 对于Mongodb中的聚合应...

mongodb如何建立索引

  • 2014-04-29 10:39
  • 32KB
  • 下载

MongoDB-索引

  • 2016-06-27 15:18
  • 16KB
  • 下载

MongoDB基础学习二----MongoDB中常用的索引操作

# 索引(重点) 在任何的数据库中,索引都是一种提升数据库检索性能的手段,这一点在MongoDB数据库之中同样是存在的, 在MongoDB数据里面仍然会存在有两种的索引创建。 |- 自动创建 |...

MONGODB的索引探究

  • 2014-06-25 11:06
  • 250KB
  • 下载

MongoDB总结(二):mongoDB的索引、备份和恢复、固定集合及数据库安全

在使用mongodump -h dbhost -d dbname -o dbdirectory 进行数据备份时出现以下错误: Wed Apr 20 21:58:00.481 JavaScript ex...

MongoDB官方文档翻译系列之 -- 索引交集

【无耻的打个小广告】: 接下来我会陆续发出一些翻译文档,第一时间会发在我的微信公众号上,欢迎大家订阅我(公众号:mongodb_side)

mongodb 索引

好,今天分享下mongodb中关于索引的基本操作,我们日常做开发都避免不了要对程序进行性能优化,而程序的操作无非就是CURD,通常我们 又会花费50%的时间在R上面,因为Read操作对用户来说是非常...

Mongodb源码分析--插入记录及索引B树构建

在之前的一篇文章 中,介绍了assembleResponse函数(位于instance.cpp第224行),它会根据op操作枚举类型来调用相应的crud操作,枚举类型定义如下:       enum...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)