索引:mongodb
查詢語句:數據結構
db.products.find({
"details.manufacturer": "acme",
"pricing.sale": {
$lt: 7500
}
})ide
單鍵索引:
spa
製造商(manufacturer)和價格(price)索引
複合索引:圖片
製造商(manufacturer)和價格(price)ci
複合索引的順序很重要!
文檔
索引的存在會使寫操做效率稍低一點。因此,只有會被用到的字段才設置索引!
get
mongodb絕大部分索引使用了B樹數據結構it
惟一索引:
db.users.createIndex({"account": 1}, {"unique": true})
(若是插入相同的account,會報異常。建議在建立數據以前建立好索引,以對數據進行約束)
若是該數據不重要,能夠刪除重複的鍵值文檔,用dropDups參數:
db.users.createIndex({account: 1}, {unique: true, dropDups: true})
稀疏索引:
索引默認是密集型的。
explain:
經過該命令能夠弄清楚mongodb是如何執行查詢的
db.the_table.find({"age":{"$gte":0}}).explain("executionStats")
totalKeysExamined顯示整個掃描的索引數爲0,docsExamined顯示掃描整個集合的9個文檔
能夠用ensureIndex()或createIndex()來建立索引,其中舊版本用ensureIndex()
getIndexes()方法檢查索引是否建立成功:
(集合如今有2個索引:第一個是標準的_id索引;第二個是咱們建立的num索引。索引名分別叫_id_和num_1)
設置索引後用explain查看會有變化:
db.numbers.find({num:{"$gt":19995}}).explain("executionStats")