Google Spanner 一次往返多次查询

Google Spanner multiple queries in one round trip

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

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

select * from Test1;

select * from Test2;

不,不是在单个请求中。当前的批处理支持仅适用于写入。相反,在单独的请求上并行发送 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)

即使两个表具有不同的列数或不同的列类型,这仍然有效。这里的限制是,这将只是 return 一行,其中包含将在内存中完全具体化的所有数据。