首页 > 解决方案 > Couchbase N1ql 查询在 Java 中急切地获取

问题描述

我有一个这样的 Java Couchbase n1ql 查询:

N1qlQueryResult result = bucket.query(N1qlQuery.simple(sql), queryTimeout, TimeUnit.MILLISECONDS);

不幸的是,在某些情况下,此查询可能会返回很多行,然后需要对其进行迭代。这需要很长时间,因为看起来文档正在被懒惰地获取。我想实现急切地获取文档,我收集这意味着设置includeDocs为 true。

如何将查询设置为急切获取或将获取批量大小设置为较大的数字?

标签: javaspringcouchbase

解决方案


要将性能一分为二,您可以尝试更改 sql 以仅选择 meta().id。另外,检查控制台中查询的解释,看看它是否使用主索引以外的索引。

在这种情况下,没有批量大小或急切获取。所有这些细节都由查询引擎处理。SDK 发送请求,查询引擎流式传输结果。SDK 中有一个流式解析器来处理传入的行,但这通常不是支配者。

您可以做的另一件事是检查返回的指标。将在客户端观察到的时间与在查询引擎上记录使用的时间进行比较会很好。请参阅N1qlMetricsprofileInfo()(可能需要在查询中启用)。


推荐阅读