[英]Mongodb query performance
我有一個250K文檔的集合,我想找到最后一個插入了特定屬性“siteid”的索引。 這是我正在使用的查詢。
db.getCollection('txnCollection').find({"siteid":"123456"}).limit(1).sort({"_id":-1})
如果有記錄,則很快找到。 如果沒有,性能不夠快,大約0.8s。
但是,如果我運行查詢
db.getCollection('txnCollection').find({"siteid":"123456"}).limit(1)
即使沒有siteid 123456的文檔,性能也非常快。
如果返回一條記錄來運行第二個查詢來獲取我想要的記錄,那么運行此查詢似乎很愚蠢 - 即。 最后插入的一個,但我無法找到更好的方法
有關運行時的信息解釋我得到的結果是
{
"queryPlanner" : {
"plannerVersion" : 1,
"namespace" : "txn.txnCollection",
"indexFilterSet" : false,
"parsedQuery" : {
"siteid" : {
"$eq" : "123456"
}
},
"winningPlan" : {
"stage" : "SORT",
"sortPattern" : {
"_id" : -1
},
"limitAmount" : 1,
"inputStage" : {
"stage" : "KEEP_MUTATIONS",
"inputStage" : {
"stage" : "FETCH",
"inputStage" : {
"stage" : "IXSCAN",
"keyPattern" : {
"siteid" : 1
},
"indexName" : "siteid_1",
"isMultiKey" : false,
"direction" : "forward",
"indexBounds" : {
"siteid" : [
"[\"123456\", \"123456\"]"
]
}
}
}
}
},
"rejectedPlans" : []
},
"serverInfo" : {
"host" : "XXXXX",
"port" : 27017,
"version" : "3.0.6",
"gitVersion" : "1ef45a23a4c5e3480ac919b28afcba3c615488f2"
},
"ok" : 1
}
關鍵是當使用sort
和limit
時,在執行limit
之前應用sort
.....這意味着你的完整查詢結果被排序然后被限制。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.