我有一个大型历史事务表(15-2000 万行 MANY 列)和一个一列一列的表。有一行的表包含一个日期(最后处理日期),该日期将用于提取事务表('process_date')中的数据。
问题:我应该将“process_date”表内部连接到事务表还是将事务表连接到“process_date”表?
我有一个大型历史事务表(15-2000 万行 MANY 列)和一个一列一列的表。有一行的表包含一个日期(最后处理日期),该日期将用于提取事务表('process_date')中的数据。
问题:我应该将“process_date”表内部连接到事务表还是将事务表连接到“process_date”表?
我会这样做
SELECT <<list only columns you need>>
FROM large_historical_transaction_table t
WHERE EXISTS (SELECT 1 FROM OneRowTable o
WHERE o.last_processing_date = t.process_date)
内连接是对称的双向关系,一般来说没关系,但在这种情况下我建议根本不连接,将阈值日期读入变量并将其作为参数传递给其他选择查询...
为了便于阅读,我将从事务表中进行内部连接,以明确指示带有日期的第二个表就像一个过滤器。
连接表时,查询优化器会快速嗅探两者以确定最合适的连接实现。从逻辑上讲,内部连接是对称的,但实现可能有利于一侧而不是另一侧以提高性能。