MongoDB學習整理之索引

來源:互聯網
上載者:User

索引資訊儲存在system.indexes

建立索引:
        db.c1.ensureIndex({age:1},{background:true})
        1:升序  -1 :降序
        background:是否後台建立索引

查詢表的索引
        db.c1.getIndexes()或db.system.indexes.find()

文檔索引:即將索引建立在嵌入式文件類型的欄位上。
        db.factories.insert({name:"baidu",addr:{city:"beijing",state:"BJ"}})
        db.factories.ensureIndex({addr:1})
        db.factories.find({addr:{city:"beijing",state:"BJ"}}) --走索引
        db.factories.find({addr:{state:"BJ",city:"beijing"}}) --不走索引且查詢不出資料,因為順序不一致

複合式索引:
        db.factories.ensureIndex({"addr.city":1,"addr.state":1})
        db.factories.find({"addr.city":"beijing","addr.state":"BJ"})  --走索引
        db.factories.find({"addr.city":"beijing"})           --走索引
        db.factories.find({"addr.state":"BJ","addr.city":"beijing"}) --不走索引,因為順序不一致

唯一索引:ensureIndex加入unique:true
        db.t4.ensureIndex({firstname:1,lastname:1},{unique:true})

強制使用索引:使用hint命令,並不是所有操作走索引一定快
        db.t5.insert({name:"liangzhangping",age:28})      --添加資料用來測試
        db.t5.ensureIndex({name:1,age:1}) --建立索引
        db.t5.find({age:{$lt:30}}).explain() --查看執行計畫,看看有沒有走索引
               
        db.t5.find({age:{$lt:30}}).hint({name:1,age:1}).explain()
               

刪除索引,使用dropIndex命令
        1)刪除表中所有索引,比如:刪除t3表的所有索引
                db.t3.dropIndexes()
        2)刪除表中某一個索引,比如:刪除t4表在欄位firstname上建立的索引:
                db.t4.dropIndex({firstname:1})

重建索引:使用reIndex命令,例如重建t3表上所有的索引:
        db.t3.reIndex()

最佳化器:profiler,用來分析操作的時間,以便於進行調試及最佳化,資訊儲存在system.profile中,system.profile是Capped Collection
       
        啟動profiler:
                1)啟動MongoDB時加上“-profile=層級”
                        /app/mongo/mongodb/bin/mongod --profile=2
                2)在用戶端執行db.setProfilingLevel(層級)命令,如:
                        PRIMARY> db.setProfilingLevel(1)
        擷取當前層級:db.getProfilingLevel()
        層級:
                0 :不開啟
                1 :紀錄慢命令
                2 :紀錄所有命令
       
        db.setProfilingLevel(1,10):紀錄執行超過10ms的操作

       
       
       

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.