其实应该解释得很明白了,Query Targeting可以翻译成“查询目标指向性”。当进行查询时会统计两个计数器 每扫描一个文档,scannedObjects += 1; 每找到一个结果,returned += 1 一个健康的系统,其查询应该尽可能使用索引去找到满足条件的数据(IXSCAN)。最理想的情况下scannedObjects:returned = 1:1。最不理想的情况下,系统会生成一个集合扫描(COLLSCAN)的查询计划。COLLSCAN就会导致遍历集合中的所有文档,逐个比较是否符合查询条件。所以scannedObjects:returned = 集合总文档数:returned。因此就会看到很大的Query Targeting值。当然还有很多是居于中间的情况,比如索引可以满足3个条件中的2个,则先查出2个的结果集,再逐一扫描找出满足第三个条件的结果,可见也会出现一些scannedObjects,但只要保持较小即可。 综上所述,集中精力找出没有命中索引,或者效率不佳的索引进行优化。
其实应该解释得很明白了,Query Targeting可以翻译成“查询目标指向性”。当进行查询时会统计两个计数器
一个健康的系统,其查询应该尽可能使用索引去找到满足条件的数据(IXSCAN)。最理想的情况下scannedObjects:returned = 1:1。最不理想的情况下,系统会生成一个集合扫描(COLLSCAN)的查询计划。
COLLSCAN
就会导致遍历集合中的所有文档,逐个比较是否符合查询条件。所以scannedObjects:returned = 集合总文档数:returned。因此就会看到很大的Query Targeting值。当然还有很多是居于中间的情况,比如索引可以满足3个条件中的2个,则先查出2个的结果集,再逐一扫描找出满足第三个条件的结果,可见也会出现一些scannedObjects,但只要保持较小即可。
综上所述,集中精力找出没有命中索引,或者效率不佳的索引进行优化。