1

是否可以在往返途中对 Google Spanner 执行多个查询?

例如,我想在一次往返中运行以下两个查询:(出于性能问题)

select * from Test1;

select * from Test2;
4

2 回答 2

3

不,不是在一个请求中。当前的批处理支持仅适用于写入。相反,在单独的请求上并行发送 2 个请求。

于 2017-05-01T00:22:05.630 回答
2

您可以执行其他一些操作来组合单个查询,使其包含这两个查询的结果:

  1. 使用“UNION ALL”运算符https://cloud.google.com/spanner/docs/query-syntax#unionSELECT * FROM Test1 UNION ALL SELECT * FROM Test2

这仅在两个表中的列数相同且类型相同(或具有共同的超类型)时才有效

  1. 使用这样的查询:

SELECT ARRAY(SELECT AS STRUCT * FROM T1), ARRAY(SELECT AS STRUCT * FROM T2)

即使两个表具有不同的列数或不同的列类型,这也有效。这里的限制是这将只返回包含将在内存中完全实现的所有数据的单行。

于 2017-05-02T20:17:10.077 回答