关闭

mongodb中的索引二

125人阅读 评论(0) 收藏 举报
分类:

通常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

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:211465次
    • 积分:6802
    • 等级:
    • 排名:第3402名
    • 原创:359篇
    • 转载:46篇
    • 译文:128篇
    • 评论:12条
    最新评论