PostgreSQL联合两个表并与第三个表连接

tau*_*orf 3 sql postgresql union join query-optimization

我想与表联合并将它们与第三个元数据表连接起来,我想知道哪种方法最好/最快?
该数据库是PostgreSQL.
以下是我的两个建议,但欢迎其他方法.

在两个表上的union之前进行连接:

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
Run Code Online (Sandbox Code Playgroud)

或者首先进行联合,然后进行联接:

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
Run Code Online (Sandbox Code Playgroud)

a_h*_*ame 7

在两个语句上运行EXPLAIN ANALYZE,然后您将看到哪一个更有效.