我已經使用分頁構建了一個基於PHP的web應用程序。我做了一個Couchbase和Postgres版本。我不得不放棄N1QL,因爲它表現糟糕(也許我會提出另一個問題)。所以我將項目從N1QL遷移到了視圖。我注意到,在低頁碼(例如1,10,50每頁48條記錄)時,性能要優於postgres(0.07s vs 0.11s),但是在高頁數時(例如4000 - > 1.5秒和16000 - > 5秒)表現非常糟糕。我使用跳過+限制與本地CB庫分頁。Couchbase的PHP分頁在頁碼很高時變得非常緩慢
任何想法?
PHP:
public static function findByPage($recordsPerPage, $page) {
$query = CouchbaseViewQuery::from("dev_".static::COLLECTION_NAME, "get_".static::COLLECTION_NAME."")->reduce(false)->skip($recordsPerPage*($page-1))->limit($recordsPerPage)->custom(array("full_set"=> "true"));
$data = DB::getDB()->query($query, null, true);
// var_dump($data);
$objects = array();
foreach($data["rows"] as $row) {
$objects[] = static::find($row["key"]);
}
return $objects;
}
一的觀點(他們幾乎都是一樣的):
function (doc, meta) {
if(doc.collection == "green_area") {
emit(doc._id, null);
}
}
如果您在查詢和索引以及EXPLAIN和Couchbase版本中發佈單獨的問題,我們很樂意查看您的N1QL分頁。 – geraldss
謝謝你,如果你想看看,我已經提出了一個單獨的問題。如果它工作,我會再次執行N1QL,等待Couchbase CE 4.5.0並使用視圖+全文搜索或使用PostgreSQL。 –