我有一個(gè)像這樣的 Java Couchbase n1ql 查詢:N1qlQueryResult result = bucket.query(N1qlQuery.simple(sql), queryTimeout, TimeUnit.MILLISECONDS);不幸的是,在某些情況下,這個(gè)查詢會(huì)返回很多行,然后需要迭代。這需要很長(zhǎng)時(shí)間,因?yàn)榭雌饋?lái)文檔正在被懶惰地獲取。我想實(shí)現(xiàn)急切地獲取文檔,我收集這意味著設(shè)置includeDocs為 true。如何將查詢?cè)O(shè)置為急切地獲取或?qū)@取批量大小設(shè)置為一個(gè)較高的數(shù)字?
1 回答

慕尼黑的夜晚無(wú)繁華
TA貢獻(xiàn)1864條經(jīng)驗(yàn) 獲得超6個(gè)贊
為了平分性能,您可以嘗試更改 sql 以僅選擇 meta().id。另外,檢查控制臺(tái)中查詢的解釋,看看它是否使用主索引以外的索引。
在這種情況下,沒(méi)有批量大小或預(yù)先獲取。所有這些細(xì)節(jié)都由查詢引擎處理。SDK 發(fā)送請(qǐng)求,查詢引擎流式傳輸結(jié)果。SDK 中有一個(gè)流解析器來(lái)處理傳入的行,但這通常不是支配者。
您可以做的另一件事是檢查返回的指標(biāo)。比較在客戶端觀察到的時(shí)間和查詢引擎使用的記錄會(huì)很好。請(qǐng)參閱N1qlMetrics或profileInfo()(可能需要在查詢中啟用)。
添加回答
舉報(bào)
0/150
提交
取消