【发布时间】:2011-08-27 02:00:11
【问题描述】:
我想联合表并将它们与第三个元数据表连接起来,我想知道哪种方法最好/最快?
数据库是 PostgreSQL。
以下是我的两个建议,但也欢迎其他方法。
在两个表的并集之前进行连接:
SELECT a.id, a.feature_type, b.datetime, b.file_path
FROM table1 a, metadata b WHERE a.metadata_id = b.id
UNION ALL
SELECT a.id, a.feature_type, b.datetime, b.file_path
FROM table2 a, metadata b WHERE a.metadata_id = b.id
或者先做union,再做join:
SELECT a.id, a.feature_type, b.datetime, b.file_path
FROM
(
SELECT id, feature_type, metadata_id FROM table1
UNION ALL
SELECT id, feature_type, metadata_id FROM table2
)a, metadata b
WHERE a.metadata_id = b.id
【问题讨论】:
-
我发现第二个在(人)眼上更容易。我通常会选择最“关系合理”的方法或最容易阅读和维护的方法(通常是同一件事,这不仅仅是巧合),除非它与另一个候选结构相比表现非常糟糕。
-
第一种方法适用于我获取数据。然后如何将其插入
table2? -
我在选择之前添加了一个
insert into (columns)并且能够添加行
标签: sql postgresql join query-optimization union