我有两个问题应该带来相同的结果。但是,第二个查询只给出了部分结果(不到总数的10%)。
第一个查询提供超过400万行
SELECT id, amount
FROM table1 t1 LEFT OUTER JOIN table2 t2 ON t1.id = t2.id;
其次只提供18,000条记录
CREATE VOLATILE TABLE vt AS
(
SELECT id, amount
FROM table1 t1 LEFT OUTER JOIN table2 t2 ON t1.id = t2.id;
)
WITH DATA
NO PRIMARY INDEX
ON COMMIT PRESERVE ROWS;
SELECT *
FROM vt ;
为什么第二个查询会给出较少的记录?
答案 0 :(得分:2)
执行SHOW TABLE vt;
时,您会注意到它是作为SET表创建的,该表不存储重复的行。只有18,000种不同(身份,数量)的组合。
将DISTINCT添加到您的第一个Select或使用CREATE MULTISET VOLATILE TABLE。