我正在使用N1QL从我的couchbase数据库读取数据,并且遇到了非常糟糕的性能。我正在处理观点atm,但如果有人知道为什么会发生这种情况,我很高兴知道,也许我会回到N1QL。虽然2M记录(但有效)的分页速度非常慢,但分页搜索会超出@ 2M记录。 Couchbase CE 4.1.0
以下是查询:
@media screen and (-ms-high-contrast: active) and (max-width: 30em),
(-ms-high-contrast: none) and (max-width: 30em) {
width: 130px !important;
padding-left:18px !important;
}
索引:
public static function findByPage($recordsPerPage, $page) {
$query = CouchbaseN1qlQuery::fromString('SELECT * FROM `public_portal` WHERE `collection`=$collection ORDER BY `_id` LIMIT $limit OFFSET $offset');
$query->options['$collection'] = static::COLLECTION_NAME;
$query->options['$limit'] = $recordsPerPage;
$query->options['$offset'] = $recordsPerPage*($page-1);
return self::doQueryAndGetObjects($query);
}
我的解释:
CREATE INDEX `public_portal_collection` ON `public_portal`(`collection`) USING GSI;
CREATE INDEX `public_portal_id` ON `public_portal`(`_id`) USING GSI;
这是通过4000x5记录完成的。
“Collection”就是我所说的“类型”。
答案 0 :(得分:1)
查询使用order by和查询引擎需要在返回文档之前获取所有记录并排序,即使限制值很小,因为它需要时间。
你看到的是什么类型的时间。它是来自索引器还是查询。你可以发布超时消息。
在4.5.0中,这种类型的查询表现得更好。