Couchbase N1ql查询在Java中热切获取

时间:2018-11-01 04:12:20

标签: java spring couchbase

我有一个Java Couchbase n1ql查询,如下所示:

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

不幸的是,在某些情况下,此查询可能返回很多行,然后需要对其进行迭代。这似乎花费了很长时间,因为似乎文档被懒惰地获取了。我想热切地实现获取文档的工作,收集这些文档意味着将includeDocs设置为true。

如何将查询设置为紧急获取或将获取批处理大小设置为较高的数字?

1 个答案:

答案 0 :(得分:2)

要平分性能,可以尝试更改sql以仅选择meta()。id。另外,请在控制台中查看查询的说明,查看其是否使用的不是主索引。

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

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