在MS SQL Server DB中考虑以下标准表/子表关系:
PARENT
-ID (PK)
-OTHER_FIELD
CHILD
-ID (PK)
-PARENT_ID (FK)
-OTHER_FIELD
现在还要考虑在DB中存在这些表的其他版本(具有相同的结构):PARENT_2 / CHILD_2,PARENT_3 / CHILD_3,PARENT_4 / CHILD_4。
我想创建一个标准机制来从简单查询中组合的所有表中选择数据。首先想到的是:
PARENT_VIEW = PARENT UNION ALL PARENT_2 UNION ALL PARENT_3 UNION ALL PARENT_4
CHILD_VIEW = CHILD UNION ALL CHILD_2 UNION ALL CHILD_3 UNION ALL CHILD_4
但是我担心由于PARENT_VIEW中的每一行必须扫描每个JOIN的CHILD_VIEW中的每一行,因此对这些视图包含JOIN的查询将是可怕的。实际上有多个不同的CHILD表(导致多个JOIN),并且我将在适当的时候处理大量数据。我认为这不会扩展。
理想情况下,我想保留表格的结构(而不是将它们展平)。
总是使用WHERE条件过滤对组合表进行的查询。
我知道为每个PARENT / CHILD表分别编写查询并在每个结果集上使用UNION ALL的替代方法,因此JOIN会更有效率。
我也考虑过条件联接,但还没有进一步探讨过这个问题。
有关如何继续的任何建议(理想情况下有一些DBMS科学支持)?