sql – 对两个表进行采样后进行连接

在我连接两个表之后我需要一个样本,例如:

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行?)

附:
我正在使用teradata

最佳答案 您可以按照建议执行操作,在派生表中应用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
点赞