糟糕的N1QL性能

时间:2016-07-27 10:06:40

标签: php indexing couchbase n1ql

我正在使用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”就是我所说的“类型”。

1 个答案:

答案 0 :(得分:1)

查询使用order by和查询引擎需要在返回文档之前获取所有记录并排序,即使限制值很小,因为它需要时间。

你看到的是什么类型的时间。它是来自索引器还是查询。你可以发布超时消息。

在4.5.0中,这种类型的查询表现得更好。