mongodb中的索引二

通常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选项,但是仍会有很大的影响

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值