MongoDB技巧——不要到處使用索引
上面的介紹使你驚歎於索引的強大作用,但要提醒你,不是所有查詢都可以用索引 的。比如,在剛才的例子中,要是需要返回集合中90% 的文件而非獲取一些記錄, 就不應該用索引。
如果對這種查詢用了索引,結果就是幾乎遍歷整個索引樹,把其中一部分,比方說 60 GB 的索引都載入到記憶體。然後按照索引中的指標載入集合中230 GB 的文件數 據。最終將載入230 GB + 60 GB =290 GB,比不用索引還多。
所以,索引一般用在返回結果只是總體資料的一小部分的時候。根據經驗,一旦要 大約返回集合一半的資料就不要使用索引了。
若是已經對某個欄位建立了索引,又想在大規模查詢時不使用它(因為使用索引可能 會較低效),可以使用自然排序,用{"$natural" : 1} 來強制MongoDB 禁用索引。 自然排序就是“按照磁碟上的儲存順序返回資料”,這樣MongoDB 就不會使用索引了:
db.foo.find().sort({"$natural" : 1})
如果某個查詢不用索引,MongoDB 會做全表掃描,即逐個掃描文件,遍歷整個集 合,以找到結果。
寫入速度
每當增加、刪除、更新記錄,所有相應的索引也必須更新。插入文件時,MongoDB 需要找到文件中的值在每一個索引樹中的位置,然後在那兒插入。刪除時,要找到 樹中的索引項並刪除。更新時,也可能像插入時那樣新建索引項,也可能像刪除時 那樣刪除索引項,若是值更新了就會既有新增又有刪除。所以,索引會增加很多額 外的寫入。
相關文章
- mongodb索引使用MongoDB索引
- MongoDB 索引MongoDB索引
- mongoDB的索引MongoDB索引
- MongoDB索引,效能分析MongoDB索引
- mongodb建立索引和刪除索引和背景索引backgroundMongoDB索引
- mongodb 如何檢視索引MongoDB索引
- MongoDB ( 五 )高階_索引MongoDB索引
- 快速掌握mongoDB(三)——mongoDB的索引詳解MongoDB索引
- 大數量的DML時對索引處理的技巧索引
- 【MongoDB學習筆記】MongoDB索引那點事MongoDB筆記索引
- MongoDB慢查詢與索引MongoDB索引
- MongoDB索引的簡單理解MongoDB索引
- MongoDB中的定時索引MongoDB索引
- 005.MongoDB索引及聚合MongoDB索引
- MongoDB索引優化詳解MongoDB索引優化
- MongoDB複合索引詳解MongoDB索引
- 【Mongo】MongoDB索引管理-索引的建立、檢視、刪除MongoDB索引
- mongodb資料庫如何建立索引?MongoDB資料庫索引
- MongoDB中複合索引結構MongoDB索引
- MongoDB索引與優化詳解MongoDB索引優化
- MongoDB設計方法及技巧MongoDB
- MongoDB學習之豐富的索引MongoDB索引
- chrome使用技巧(看了定不讓你失望)Chrome
- Mysql InnoDB B+樹索引和雜湊索引的區別? MongoDB 為什麼使用B-樹?MySql索引MongoDB
- ORACLE GoldenGate 使用技巧-容錯處理等OracleGo
- 【Mongo】MongoDB WiredTiger引擎調優技巧MongoDB
- Mongodb使用MongoDB
- MongoDB 使用MongoDB
- oracle 索引和不走索引的幾種形式Oracle索引
- 反向索引處理前%索引
- 4個最佳化MongoDB的技巧MongoDB
- 聊聊非關係型資料庫MongoDB索引資料庫MongoDB索引
- MySQL 組合索引不生效MySql索引
- 最佳化SQL Server索引的技巧SQLServer索引
- MongoDB的使用MongoDB
- MongoDB使用初探MongoDB
- 提高 MongoDB 運維效率的實用技巧MongoDB運維
- Mongodb 效能監控工具FreeMonitoring,mongostat,mongotop,Profiler,索引,分片,事務超時,MongoDB調優MongoDB索引
- 這樣delete居然不走索引delete索引