<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                [TOC] # 普通單列索引 測試代碼: ~~~ > for(var i=0;i<200000;i++){ ... db.java.insert({name:'xiao'+i,age:i}) ... } ~~~ 第一:先檢驗一下查詢性能 var start = new Date() db.java.find({name:'xiao156778'}) var end = new Date() end-start 第二:為name創建索引 db.java.ensureIndex({name:1}) 第三:再執行第一部分代碼可以看出有數量級的性能提升 沒有添加索引時使用時間是 添加索引 db.java.ensureIndex({name:1}) 添加完成后,再次查詢 語法: db.集合名.ensureIndex({鍵名:1}) 1是升續 -1是降續 # 多列索引(復合索引) 創建多列索引 db.集合名.ensureIndex({field1:1/-1, field2:1/-1}); 對name和age 建立一個復合索引 可以使用db.集合名.getIndexes()查看創建的索引情況。 ![](https://box.kancloud.cn/da865d6644637c90d142b15b9b98a1b3_2433x962.jpg) # 子文檔索引 語法: db.集合名.ensureIndex({filed.subfield:1/-1}); 如下文檔可以建立子文檔索引 {name:’諾基亞手機1’,price:12.34,spc:{weight:100,area:’紐約’}} {name:’諾基亞手機2’,price:42.34,spc:{weight:200,area:’倫敦’}} 比如要查詢weight等于100的文檔。 db.goods.find({‘spc.weight’:100}) 根據當前案例,我們建立子文檔索引 db.net.ensureIndex({'spc.weight':1}) # 唯一索引 語法: db.集合名.ensureIndex({name:-1},{unique:true}) # 過期索引 是在一段時間后會過期的索引 在索引過期后,相應的數據會被刪除 適合存儲一些一段時間之后就失效的數據 db.collection.ensureIndex({time:1},{expireAfterSeconds:秒數}) **注意** 存儲在過期索引字段的值必須是指定的時間類型 必須是ISODate或者ISODate數組,不能使用時間戳,否則不能被自動刪除 如果指定是ISODate數組,則按照最小的時間進行刪除 過期索引不能是復合索引 刪除索引時間不是精確的 刪除過程是后臺程序每60s跑一次,而且刪除也需要時間,所以存在誤差 # 全文索引 集合只有一個全文索引 建立方法 ~~~ 建立一個 db.articles.ensureIndex({key:"text"}) 建立多個 db.articles.ensureIndex({key_1:"text",key_2:"text"}) 所有的都建立 db.articles.ensureIndex({"$**":"text"}) ~~~ 如何使用全文索引 ~~~ db.articles.find({$text:{$search:"coffee"}}) 查找包含aa或bb或cc db.articles.find({$text:{$search:"aa bb cc"}}) 查找aa或bb但不要cc db.articles.find({$text:{$search:"aa bb -cc"}}) 查找既包含aa又包含bb又包含cc的文檔,用引號把他們包起來就好 db.articles.find({$text:{$search:"\"aa\" \"bb\" \"cc\""}}) ~~~ --- 全文索引相似度 $meta操作符:{score:{$meta:"textScore"}} 寫在查詢條件后面可以返回結果的相似度,與sort一起使用,可以達到很好的實用效果 例子 ~~~ db.articles.find({$text:{$search:"aa bb cc"}},{score:{$meta:"textScore"}}) ~~~ 還可以排序 ~~~ db.articles.find({$text:{$search:"aa bb cc"}},{score:{$meta:"textScore"}}).sort({score:{$meta:"textScore"}}) ~~~ --- 限制 全文索引非常強大,當同樣存在限制: 每次查詢,只能指定一個$text查詢 $text查詢不能出現在$nor查詢中 查詢中如果包含了$text,hint不再起作用 還不支持中文 # 查看索引 常用命令: (1)查看當前索引狀態: db.集合名.getIndexes(); (2)詳情查看本次查詢使用哪個索引和查詢數據的狀態信息。 db.集合名.find({name:’xiao’}).explain() ![](https://box.kancloud.cn/2c165a9499f8bfe4b8da5fda1d4d6c9b_1174x734.jpg) ![](https://box.kancloud.cn/abe1a03570af467617582a16fa1f5f7f_1178x640.jpg) # 刪除索引 刪除單個索引 db.集合名.dropIndex({filed:1/-1}); 刪除所有索引 db.集合名.dropIndexes(); # 重建索引 一個表經過很多次修改后,導致表的文件產生空洞,索引文件也如此. 可以通過索引的重建,減少索引文件碎片,并提高索引的效率. 類似mysql中的optimize table mysql里面使用optimize table語法:optimize table 表名 語法:db.集合名.reIndex() # 索引使用注意事項 (1)創建索引的時候,注意1是正序創建索引 -1是倒敘創建索引 (2)索引的創建在提高查詢性能的同時會影響插入性能,對于經常查詢少插入的文檔可以考慮用索引 (3)復合索引要注意索引的先后順序。 (4)每個鍵全建立索引不一定就能提高性能,索引不是萬能的。 (5)在做排序工作的時候如果是超大數據量也可以考慮加上索引用來提高排序的性能。 # 索引構建情況分析 ## mongostat 自帶的 使用 mongostat -h ip:端口 如果有用戶名和密碼 -u -p 字段說明: 索引情況:idx miss qr讀隊列 qw寫隊列
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看