mongodb 執行計劃

MongoDB 查詢分析可以確保我們所建立的索引是否有效,是查詢語句性能分析的重要工具。

MongoDB 查詢分析常用函數有:explain() 和 hint()。

explain 操作提供了查詢信息,使用索引及查詢統計等。有利於我們對索引的優化。

接下來我們在 users 集合中創建 gender 和 user_name 的索引:

db.users.ensureIndex({gender:1,user_name:1}) 現在在查詢語句中使用 explain :

db.users.find({gender:"M"},{user_name:1,_id:0}).explain()

Stage 分類

COLLSCAN:掃描整個集合 IXSCAN:索引掃描 FETCH:根據索引去檢索選擇 document

SHARD_MERGE:將各個分片返回數據進行 merge

SORT:表明在內存中進行了排序(與老版本的 scanAndOrder:true 一致)

LIMIT:使用 limit 限制返回數

SKIP:使用 skip 進行跳過 IDHACK:針對_id 進行查

SHARDING_FILTER:通過 mongos 對分片數據進行查詢

COUNT:利用 db.coll.explain().count() 之類進行 count

COUNTSCAN:count 不使用用 Index 進行 count 時的 stage 返回

COUNT_SCAN:count 使用了 Index 進行 count 時的 stage 返回 SUBPLA:未使用到索引的 $or 查詢的 stage 返回

TEXT:使用全文索引進行查詢時候的 stage 返回 PROJECTION:限定返回字段時候 stage 的返回

查看執行計劃

db.collection_name.find({}).explain(true)

find{} 裏面要設置具體的查詢條件,纔可以查到精確的執行計劃

MongoDB 查看執行計劃時,最理想狀態:--20180604

nReturned=totalDocsExamined=totalKeysExamined

本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源https://mp.weixin.qq.com/s/7WU-KmLLjoidilQENoQZ-A