我在连接两个表之后需要一个示例,例如:
SELECT *
from
A left join B
on A.col=B.col
sample 1000000
问题是A和B是巨大的(超过30亿行),当我尝试加入时,我的虚拟空间用完了。
有没有办法在样本之后进行连接,以便它连接较小的表(例如从A和B中选择10,000,000个样本,内部连接它们,并从连接中选择1,000,000,希望我得到至少1,000,000行?)
P.S。 我正在使用teradata
答案 0 :(得分:1)
您可以按照建议执行操作,将SAMPLE
应用于派生表:
SELECT *
from
(
SELECT * FROM A
SAMPLE 10000000
) AS A
left join B
on A.col=B.col
类似于内部联接
SELECT *
from
(
SELECT * FROM A
SAMPLE 100000000 -- larger sample than needed
) AS A
join B
on A.col=B.col
sample 10000000
答案 1 :(得分:0)
您可以尝试使用flag
加入子查询来限制大小:
SAMPLE
答案 2 :(得分:0)
SELECT * INTO #A FROM A SAMPLE 1000000;
接着是
SELECT * FROM #A left join B on #A.Col = B.col;
我要记住,在你的原始查询中,你似乎要求任何1000000的A,然后LEFT JOIN到B哪里有一个批处理,或者如果没有匹配则返回B为空 - 我' m假设它也是1-1或1-0加入 - 否则它与你原来的想法不符合
答案 3 :(得分:0)
SELECT *
from
(select * from A sample 1000000) A left join B
on A.col=B.col