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