2016-12-15 26 views
1

我想知道是否有人可以在我的雲查詢下面提供一些建議。現在花費20秒鐘時間處理50,000文件的數據庫 - 我懷疑我的速度可能會比這更快。加快我的雲查詢

查詢的目的是找到所有具有等於特定值的屬性「searchCode」的文檔以及特定ID的進一步列表。

searchCode和_id都被索引 - 爲什麼我的查詢需要這麼長時間/我能做些什麼來加速它?

mydb.find({selector: {"$or":[{"searchCode": searchCode},{"_id":{"$in":idList}}]}}, function (err, result) { 
    if(!err){ 
     fulfill(result.docs); 
    } 
    else{ 
     console.error(err); 
    } 
}); 

謝謝, 詹姆斯

回答

1

你可以嘗試做不同的呼籲查詢

  • 找到我的文檔,其中searchCode =「某個值」
  • 找到我的文檔,其ID匹配ID列表

第一個可以實現d用find呼叫和像這樣的查詢:

{ selector: {"searchCode": searchCode} } 

第二可以通過敲擊數據庫的_all_docs端點,在ID的列表傳遞作爲參數keys來實現例如

GET /db/_all_docs?keys=["a","b","c"] 

您可能會發現,當並行運行這兩個請求和合並的結果,給你更好的性能。

+0

感謝Glynn - 我已經分開了兩個,它似乎我遇到的問題是ID調用的一部分 - 通過搜索代碼的查詢幾乎立即返回,但ID調用仍然需要超過15秒 - 進一步調查此進一步 –

+0

嗨格林 - 我實際上得到了這個工作,因爲你建議使用我的模塊.list方法,它必須調用GET/db/_all_docs但是我現在有一個問題,即傳入的鍵數量超過了作爲查詢的限制參數。這裏的任何想法?我見過文檔建議你可以用couch_db上的POST檢索all_docs來提交大量密鑰 - 這與cloudant中的相同嗎? –

+0

我解決了這個問題 - 感謝您正確運行它們,因爲單獨的查詢效率更高。我最終確定了使用主體中的鍵爲/ db/_all_docs提供POST的建議,這些鍵適用於我的大量鍵 –