我正在使用一些旧版HiveQL。我将组成一个大致相同的示例,但要简单得多:
CREATE TABLE IF NOT EXISTS output_table
STORED AS [...]
AS
SELECT cust.*,
ord.id,
ord.amount
FROM
Customer cust
LEFT JOIN (SELECT id, date, amount FROM Order) as ord
我被告知子查询的基本原理是Order具有大量的行和列,因此不必扫描所有列就可以提高性能。根据传统的RDBMS经验,这对我来说似乎违反直觉。我希望子查询比连接整个表更昂贵,因为看起来未使用的列似乎不应该影响性能。
(实际的QL大约有55行,有大约5或6个连接。被连接的表大约有4.5亿行和61列。我不确定索引;我找到后将更新此问题该信息。)