2

选项1:

TableResult results = bigquery.query(queryConfig);
while(results.hasNextPage()) {
        results = results.getNextPage();
        for (FieldValueList row : results.getNextPage().getValues()) {
            //Print row
        }
}

选项 2:

TableResult results = bigquery.query(queryConfig);
for (FieldValueList row : results.iterateAll()) {
     //Print row
}

哪个更好。我看不出所用时间有什么不同。getValues() 比 iterateAll() 有什么优势吗?

4

1 回答 1

1

许多 API 使用分页实现列表操作或查询。在实现中,您需要知道如何从当前页面和下一页获取数据。

例如,如果您有一个返回 45 行的查询,而您只需要每页显示 10 行,则需要使用“getValues()”,这将返回前 10 行并停止。使用“iterateAll”将返回一个额外的迭代器,该迭代器将影响对 API 进行额外调用的性能,返回 45 行。

总之,如果您想从查询中返回所有行,您可以使用 iterateAll,但它会通过对 API 进行额外调用而影响性能。如果您想立即从当前页面获取结果,可以使用 getValues。

您可以查看这些示例片段。

于 2022-02-14T18:56:11.860 回答