MongoDB的索引與執行計畫

2021-10-04 01:14:57 字數 1611 閱讀 3904

目錄索引

執行計畫

索引通常能夠極大的提高查詢的效率,如果沒有索引,mongodb在讀取資料時必須掃瞄集合中的每個檔案並選取那些符合查詢條件的記錄。這種掃瞄全集合的查詢效率是非常低的,特別在處理大量的資料時,查詢可以要花費幾十秒甚至幾分鐘,這對**的效能是非常致命的。

索引是特殊的資料結構,索引儲存在乙個易於遍歷讀取的資料集合中,索引是對資料庫表中一列或多列的值進行排序的一種結構。

#檢視索引

> db.user.getindexes()[,

"name" : "_id_",

"ns" : "testdb.user"}]

#說明:id欄位的1表示公升序建立索引,-1表示降序建立索引。

#建立索引

> db.user.createindex()

#刪除索引

db.user.dropindex("age_1")

#或者,刪除除了_id之外的索引

db.user.dropindexes()

#建立聯合索引

db.user.createindex()

#檢視索引大小,單位:位元組

db.user.totalindexsize()

mongodb通過「查詢分析」可以確保我們建立的索引是否有效,是查詢語句效能分析的重要工具。確保索引主要看「執行計畫」這個欄位即winningplan中的stage欄位。

#插入1000條資料

for(var i=1;i<1000;i++)db.user.insert()

#檢視執行計畫

> db.user.find(,id:}).explain()},}

]},

"winningplan" : ,

"indexname" : "age_1_id_-1",

"ismultikey" : false,

"multikeypaths" : ,

"isunique" : false,

"issparse" : false,

"ispartial" : false,

"indexversion" : 2,

"direction" : "forward",

"indexbounds" : }},

"rejectedplans" : [ ]

}, "serverinfo" : ,

"ok" : 1

}

#測試沒有使用索引

> db.user.find().explain()

},"winningplan" :

},"direction" : "forward"

},"rejectedplans" : [ ]

}, "serverinfo" : ,

"ok" : 1

}

深入學習MongoDB之索引與執行計畫

mongodb索引 建立索引 db.getcollection test ensureindex 或者db.getcollection test createindex ok 1.0 索引建立成功 查詢索引狀態 db.getcollection test getindexes name id ns ...

MongoDB檢視執行計畫

一 概述 mongodb中的explain 函式可以幫助我們檢視查詢相關的資訊,查詢分析可以確保我們建立的索引是否有效,是查詢語句效能分析的重要工具。二 explain 基本用法 explain 的用法是必須放在最後面,語法如下 db.collecton.find explain explain 常...

高效能mongodb之執行計畫

mongodb 3.0之後,explain的返回與使用方法與之前版本有了不少變化,介於3.0之後的優秀特色,本文僅針對mongodb 3.0 的explain進行討論。現版本explain有三種模式,分別如下 其中 queryplanner 是現版本explain的預設模式,queryplanner...