java - Couchbase N1ql 查询在 Java 中急切地获取
问题描述
我有一个这样的 Java Couchbase n1ql 查询:
N1qlQueryResult result = bucket.query(N1qlQuery.simple(sql), queryTimeout, TimeUnit.MILLISECONDS);
不幸的是,在某些情况下,此查询可能会返回很多行,然后需要对其进行迭代。这需要很长时间,因为看起来文档正在被懒惰地获取。我想实现急切地获取文档,我收集这意味着设置includeDocs
为 true。
如何将查询设置为急切获取或将获取批量大小设置为较大的数字?
解决方案
要将性能一分为二,您可以尝试更改 sql 以仅选择 meta().id。另外,检查控制台中查询的解释,看看它是否使用主索引以外的索引。
在这种情况下,没有批量大小或急切获取。所有这些细节都由查询引擎处理。SDK 发送请求,查询引擎流式传输结果。SDK 中有一个流式解析器来处理传入的行,但这通常不是支配者。
您可以做的另一件事是检查返回的指标。将在客户端观察到的时间与在查询引擎上记录使用的时间进行比较会很好。请参阅N1qlMetrics或profileInfo()(可能需要在查询中启用)。
推荐阅读
- npm - 在 Cloud Build 过程中使用来自 Google Secret Manager 的 NPM 令牌
- c++ - 在 Visual Studio 发布版本之后,您是否必须保留额外的文件?
- jquery - Select2 Ajax 和更多数据供选项
- c++ - WebAssembly + 并发:尝试从 C/C++ 设置线程本地堆栈
- css - 为什么 Firefox 中的 progressBarrProgress 不像 Chrome 中那样填充 100%?
- javascript - Vue-konva 遇到错误:必须使用 import 来加载 ES 模块
- reactjs - 根据所选选项填充 Antd 输入值
- python - Luigi:任务从未被调用
- jhipster - Jhipster 隐藏不记名令牌
- typescript - 如何通过 NPM 包将全局类型声明更改为已声明的类型?