【发布时间】:2021-09-02 20:17:59
【问题描述】:
我有两个表,第一个主表存储所有对象,第二个关系表存储跨多级的父子关系。
主表:table1
| object_id | object_column1 | object_column2 |
|---|---|---|
| parent_1 | some_value | some_value |
| parent_2 | some_value | some_value |
| child_1 | some_value | some_value |
| child_2 | some_value | some_value |
| child_3 | some_value | some_value |
| child_4 | some_value | some_value |
| child_5 | some_value | some_value |
关系表:table2
| parent_id | child_id | relation_column1 | relation_column2 |
|---|---|---|---|
| parent_1 | child_1 | has_list_value | has_string_value |
| parent_1 | child_2 | has_list_value | |
| child_2 | child_3 | has_string_value | |
| child_2 | child_4 | has_list_value | has_string_value |
| child_3 | child_5 |
在 Oracle 和 SQL Server DB 中提取所有级别的数据都使用了WITH Clause。
在 Spanner 中如何实现?
尝试过交错表,但这对上述表没有太大帮助,因为主表到关系表只解决了一个级别,而不是分层的所有级别的检索。递归查询会导致性能开销。
有没有人遇到过这种情况和/或找到这种情况的解决方案?
【问题讨论】:
-
我并不完全清楚您想要实现的目标。您介意在 SQL Server / Oracle 中给出一个您想要实现的查询的工作示例吗?您提到 SQL Server/Oracle 中的 WITH 子句。 Cloud Spanner 也支持 WITH:cloud.google.com/spanner/docs/query-syntax#with_clause