Google Spanner 一次往返多次查询
Google Spanner multiple queries in one round trip
是否可以在往返过程中针对 Google Spanner 执行多个查询?
例如,我想 运行 在一次往返中执行以下两个查询:(出于性能考虑)
select * from Test1;
select * from Test2;
不,不是在单个请求中。当前的批处理支持仅适用于写入。相反,在单独的请求上并行发送 2 个请求。
您还可以执行其他一些操作来组合单个查询,使其包含这两个查询的结果:
- 使用 "UNION ALL" 运算符 https://cloud.google.com/spanner/docs/query-syntax#union :
SELECT * FROM Test1 UNION ALL SELECT * FROM Test2
这仅在两个表中的列数相同且类型相同(或具有共同的超类型)时有效
- 使用这样的查询:
SELECT ARRAY(SELECT AS STRUCT * FROM T1), ARRAY(SELECT AS STRUCT * FROM T2)
即使两个表具有不同的列数或不同的列类型,这仍然有效。这里的限制是,这将只是 return 一行,其中包含将在内存中完全具体化的所有数据。
是否可以在往返过程中针对 Google Spanner 执行多个查询?
例如,我想 运行 在一次往返中执行以下两个查询:(出于性能考虑)
select * from Test1;
select * from Test2;
不,不是在单个请求中。当前的批处理支持仅适用于写入。相反,在单独的请求上并行发送 2 个请求。
您还可以执行其他一些操作来组合单个查询,使其包含这两个查询的结果:
- 使用 "UNION ALL" 运算符 https://cloud.google.com/spanner/docs/query-syntax#union :
SELECT * FROM Test1 UNION ALL SELECT * FROM Test2
这仅在两个表中的列数相同且类型相同(或具有共同的超类型)时有效
- 使用这样的查询:
SELECT ARRAY(SELECT AS STRUCT * FROM T1), ARRAY(SELECT AS STRUCT * FROM T2)
即使两个表具有不同的列数或不同的列类型,这仍然有效。这里的限制是,这将只是 return 一行,其中包含将在内存中完全具体化的所有数据。