Heim  >  Artikel  >  Datenbank  >  测试MongoDB中key的位置对查询的影响

测试MongoDB中key的位置对查询的影响

WBOY
WBOYOriginal
2016-06-07 15:22:03975Durchsuche

测试MongoDB中key的位置对查询的影响 《MongoDB开发技巧50例》:通过建立分级文档加速扫描一文中讲了合理的层析可以减少MongoDB对字段的访问提升速度。以前从来没有想到还会有这样的情况,在关系型数据库中没有听说过。那现在就来测试一下是否是这样的。 清

测试MongoDB中key的位置对查询的影响

 

《MongoDB开发技巧50例》:通过建立分级文档加速扫描"一文中讲了合理的层析可以减少MongoDB对字段的访问提升速度。以前从来没有想到还会有这样的情况,在关系型数据库中没有听说过。那现在就来测试一下是否是这样的。

 

清单1:

 

01
for (var i=0; i<5000000; i++){
02
    db.testq.insert({ "A" : "A" + i, "B" : "B" + i, "C" : "C" + i, "D" : "D" + i, "E" : "E" + i, "F" : "F" + i, "G" : "G" + i, "H" : "H" + i,})
03
}
04
//查询30次
05
//准备完数据开始查询,所有的key都没有创建索引。分别根据 A、B、E、H进行查询。
06
for (var i=0; i<30; i++){
07
    res = db.testq.find({"A" : "A99999"}).explain();
08
    db.testq.res.insert({"Type" : "A", "idx" : i, "res" : res});
09
    res = db.testq.find({"B" : "B99999"}).explain();
10
    db.testq.res.insert({"Type" : "B", "idx" : i, "res" : res});   
11
    res = db.testq.find({"E" : "E99999"}).explain();
12
    db.testq.res.insert({"Type" : "E", "idx" : i, "res" : res});   
13
    res = db.testq.find({"H" : "H99999"}).explain();
14
    db.testq.res.insert({"Type" : "H", "idx" : i, "res" : res});   
15
}

 

实验结果:

 

测试MongoDB中key的位置对查询的影响

 

 

疑问与总结:

 

1.是不是因为MongDB本身是无模式的,同一个集合中可以存储任何类型、格式的数据。所以在查询要扫描所有的键。

 

2.从结果来看,确实越靠前的键查询速度越快。再设计时可以把查询常用的键放到前面。

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn