MongoDB查詢優化
阿新 • • 發佈:2018-08-14
lai 項目 數值 新建 keys mon unique spa 字段
項目場景:Mongo在首次查詢特慢,後面就好的。如果長時間不查詢,下次開始的第一次又將非常慢,於是從鏈接當時多方面,排查最終發現還是mongo索引建的有問題。
MongoDB在大批量數據查詢時經常會遇到查詢耗時長,通常情況采用建各種索引來優化。
首先第一步排查,可以在查詢後使用.explain()來查看查詢數據軌跡,便於分析每個分片的查詢索引。
db.Collection.find({}).explain()
查看索引,如果不位可以根據查詢條件,新建索引。
1.查詢索引
db.COLLECTION_NAME.getIndexes()
2.新建索引
db.COLLECTION_NAME.ensureIndex(keys[options])
此命令支持分片創建索引
keys
,要建立索引的參數列表。如:{KEY:1}
,其中key
表示字段名,1
表示升序排序,也可使用使用數字-1
降序。options
,可選參數,表示建立索引的設置。可選值如下:background
,Boolean,在後臺建立索引,以便建立索引時不阻止其他數據庫活動。默認值 false。unique
,Boolean,創建唯一索引。默認值 false。name
,String,指定索引的名稱。如果未指定,MongoDB會生成一個索引字段的名稱和排序順序串聯。dropDups
,Boolean,創建唯一索引時,如果出現重復刪除後續出現的相同索引,只保留第一個。sparse
v
,index version,索引的版本號。weights
,document,索引權重值,數值在 1 到 99,999 之間,表示該索引相對於其他索引字段的得分權重。
3.重新創建索引
如果發現索引不合適就重新創建
db.COLLECTION_NAME.reIndex()
4.刪除索引
db.COLLECTION_NAME.dropIndex("INDEX-NAME")
MongoDB查詢優化