首页 » 网站建设 » phpmongodb子查询技巧_MongoDB 查询分析

phpmongodb子查询技巧_MongoDB 查询分析

duote123 2024-12-12 0

扫一扫用手机浏览

文章目录 [+]

MongoDB 查询剖析常用函数有:explain() 和 hint()。

利用 explain()

phpmongodb子查询技巧_MongoDB 查询分析

explain 操作供应了查询信息,利用索引及查询统计等。
有利于我们对索引的优化。

phpmongodb子查询技巧_MongoDB 查询分析
(图片来自网络侵删)

接下来我们在 users 凑集中创建 gender 和 user_name 的索引:

>db.users.ensureIndex({gender:1,user_name:1})</p><p>现在在查询语句中利用 explain :</p><pre>>db.users.find({gender:\"大众M\"大众},{user_name:1,_id:0}).explain()

以上的 explain() 查询返回如下结果:

{

\"大众cursor\"大众 : \"大众BtreeCursor gender_1_user_name_1\"大众,

\"大众isMultiKey\公众 : false,

\"大众n\公众 : 1,

\"大众nscannedObjects\公众 : 0,

\公众nscanned\"大众 : 1,

\公众nscannedObjectsAllPlans\公众 : 0,

\公众nscannedAllPlans\"大众 : 1,

\公众scanAndOrder\"大众 : false,

\"大众indexOnly\"大众 : true,

\"大众nYields\公众 : 0,

\公众nChunkSkips\公众 : 0,

\"大众millis\公众 : 0,

\公众indexBounds\"大众 : {

\公众gender\"大众 : [

[

\"大众M\"大众,

\公众M\"大众

]

],

\公众user_name\"大众 : [

[

{

\"大众$minElement\公众 : 1

},

{

\"大众$maxElement\"大众 : 1

}

]

]

}}

现在,我们看看这个结果集的字段:

indexOnly: 字段为 true ,表示我们利用了索引。

cursor:由于这个查询利用了索引,MongoDB中索引存储在B树构造中,以是这是也利用了BtreeCursor类型的游标。
如果没有利用索引,游标的类型是BasicCursor。
这个键还会给出你所利用的索引的名称,你通过这个名称可以查看当前数据库下的system.indexes凑集(系统自动创建,由于存储索引信息,这个轻微会提到)来得到索引的详细信息。

n:当前查询返回的文档数量。

nscanned/nscannedObjects:表明当前这次查询一共扫描了凑集中多少个文档,我们的目的是,让这个数值和返回文档的数量越靠近越好。

millis:当前查询所需韶光,毫秒数。

indexBounds:当前查询详细利用的索引。

利用 hint()

虽然MongoDB查询优化器一样平常事情的很不错,但是也可以利用hints来强制MongoDB利用一个指定的索引。

这种方法某些环境下会提升性能。
一个有索引的collection并且实行一个多字段的查询(一些字段已经索引了)。

如下查询实例指定了利用 gender 和 user_name 索引字段来查询:

>db.users.find({gender:\"大众M\"大众},{user_name:1,_id:0}).hint({gender:1,user_name:1})

可以利用 explain() 函数来剖析以上查询:

>db.users.find({gender:\公众M\"大众},{user_name:1,_id:0}).hint({gender:1,user_name:1}).explain()

如您还有不明白的可以不才面与我留言或是与我磋商QQ群308855039,我们一起飞!

标签:

相关文章