亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

mongodb索引

發布時間:2020-07-20 08:12:10 來源:網絡 閱讀:883 作者:會說話的魚 欄目:MongoDB數據庫

索引的原理

當往某各個集合插入多個文檔后,每個文檔在經過底層的存儲引擎持久化后,會有一個位置信息,通過這個位置信息,就能從存儲引擎里讀出該文檔

MMAPv1:文件id+文件內offset

WiredTiger: WiredTiger在存儲文檔時生成的一個key,通過這個key能訪問到對應 的文檔。

CPU飆升了?半天還是沒出結果?要想提升速度,你是否想起了索引!!


建立索引后,MongoDB會額外存儲一份按age字段升序排序的索引數據,索引結構類似如下,索引通常采用類似btree的結構持久化存儲,以保證從索引里快速找出某個age值對應的位置信息,然后根據位置信息就能讀取出對應的文檔。

mongodb索引

索引就是將文檔按照某個(或某些)字段順序組織起來,以便能根據該字段高效的查詢。索引的基本作用:搜索+排序


有了索引,至少能優化如下場景的效率:

    查詢,比如查詢年齡為18的所有人。

    更新/刪除,將年齡為18的所有人的信息更新或刪除,因為更新或刪除時,需要根據條件先查詢出所有符合條件的文檔,所以本質上還是在優化查詢。

    排序,將所有人的信息按年齡排序,如果沒有索引,需要全表掃描文檔,然后再對掃描的結果進行排序。

    當存在索引時,執行DML操作將會更慢(維護索引)。

    MongoDB默認會為插入的文檔生成_id字段(如果應用本身沒有指定該字段),_id是文檔唯一的標識,為了保證能根據文檔id快遞查詢文檔,MongoDB默認會為集合創建_id字段的索引。


索引的特性

索引存儲在內存(RAM)中,應該確保該索引的大小不超過內存的限制。

如果索引的大小大于內存的限制,MongoDB會刪除一些索引,這將導致性能下降。


索引掃描類型:

索引覆蓋:如果所有需要的字段都在索引中,不需要額外的字段,就可以滿足索引覆蓋的要求,不再需要從數據頁加載數據,這就是索引覆蓋。

索引掃描

集合掃描


索引的限制

1、每個collection限制64個索引。

2、索引名的長度不能超過125個字符。

3、一個復合索引最多可以有31個字段。

4、所有索引字段是一個數組,不能使用索引覆蓋查詢。

5、正則表達式及非操作符,如$nin,$not等;算術運算符,如$mod,等;$where子句。

6、索引越多寫性能越差,例如:一張頻繁修改的collection ,其索引達到20-30索引性能嚴重瓶頸。

7、建立索引是一個IO密集型操作,特別是當你的集合很大的時候。包括MySQL在內的所有支持輔助索引的數據庫系統都有這種情況。如果你需要在一個大集合上建立索引,可以考慮在后臺建立它。

8、如果很少對集合進行讀取,可以不使用索引

索引的類型

1、單字段索引

2、復合索引

3、多鍵索引

4、Hash索引

5、地理位圖索引

6、TTL索引

7、全文索引



向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

阳江市| 儋州市| 庐江县| 会理县| 株洲县| 迭部县| 松潘县| 高要市| 古田县| 许昌县| 保山市| 仙游县| 来宾市| 九龙城区| 衡阳县| 武定县| 友谊县| 砀山县| 加查县| 马公市| 四子王旗| 闽侯县| 无为县| 绩溪县| 上栗县| 青阳县| 铁力市| 元江| 平利县| 蓬安县| 芦溪县| 车险| 黄陵县| 鹰潭市| 彭阳县| 万盛区| 芜湖县| 榆中县| 光山县| 高尔夫| 淮北市|