繁体   English   中英

从多个表中选择的最佳方法

[英]Best approach to select from multiple tables

我有很多表格,例如A1,B1,C1..etc。 所有具有相同的行结构

Moz -  Attr1 - attr2

一个表包含所有表的名称,例如:

Id(pk) - tname - input
1          A1      X
2          B1      Y
3          C1      Z

我正在寻找在一个视图中获取所有A1,B1,C1值的最佳方法。 如果可能,不使用UNION

如果所有表都具有相同的结构,则所有数据实际上都属于一个表。 为了在此处命名,我们将其称为XY

表名称“ A1,B1” ...等应仅是XY表中的另一个字段:

Moz -  Attr1 - attr2 - context
-      -       -       A1
-      -       -       B1

该表确实需要正确索引。
假设Moz字段是每个表的主键,那么您需要将(Moz,Context)作为主键,以避免出现重复的Moz值问题。

这样,获取所有表的并集就如同SELECT * from XY执行SELECT * from XY一样简单快捷。

如果您需要选择一些表: SELECT * from XY WHERE context IN ('A1', 'B1')

一般而言,在SQL RDBMS中使用动态创建的表是一个非常糟糕的主意,因为它完全违背了“关系”的目的,并且会导致性能下降。

您实际上只是发现了一条艰难的路,因为从技术上讲,您的A1,B1,C1表是不相关的,但是您希望它们通过使用并集而成为关联,而您不想使用它,因为它“很慢”。
通过将名称存储为字段,可以在“表列表”表和XY之间创建关系,现在可以使用合理的快速连接,并且不再需要“创建表”。

请参阅数据库规范化以更好地解释这些概念。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM