mongodb查詢與索引優化

索引:mongodb

    查詢語句:數據結構

        db.products.find({
            "details.manufacturer": "acme",
            "pricing.sale": {
                $lt: 7500
            }
        })ide

    單鍵索引
spa

        製造商(manufacturer)和價格(price)索引

        圖片.png

    複合索引圖片

        製造商(manufacturer)和價格(price)ci

        圖片.png

        複合索引的順序很重要!
文檔

索引的存在會使寫操做效率稍低一點。因此,只有會被用到的字段才設置索引!
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")

    圖片.png

    totalKeysExamined顯示整個掃描的索引數爲0,docsExamined顯示掃描整個集合的9個文檔


能夠用ensureIndex()或createIndex()來建立索引,其中舊版本用ensureIndex()

    圖片.png


getIndexes()方法檢查索引是否建立成功:

    圖片.png

    (集合如今有2個索引:第一個是標準的_id索引;第二個是咱們建立的num索引。索引名分別叫_id_和num_1)

    設置索引後用explain查看會有變化:

        db.numbers.find({num:{"$gt":19995}}).explain("executionStats")

            圖片.png

            圖片.png

            圖片.png

相關文章
相關標籤/搜索