2017-06-13 52 views
0

我试图从雅典娜获得N行的随机样本。但是,因为从中我要提请此示例表是巨大的天真雅典娜大小为N的随机样本

SELECT 
id 
FROM mytable 
ORDER BY RANDOM() 
LIMIT 100 

需要永远跑,大概是因为ORDER BY需要被发送到一个节点,然后慢腾腾的所有数据和订单数据。

我知道TABLESAMPLE,但它允许一个样本的一些百分比而不是一些数量的行。有没有更好的方法来做到这一点?

+0

你使用什么类型的连接器?在蜂巢连接器上,每当我运行一个简单的'SELECT * FROM t LIMIT 10'时,我都会得到稍微不同的行。它偏向于更新的数据,我假设因为不同的节点赢得每次返回结果的“种族”。你的样本需要多少公正? –

回答

4

雅典娜其实是普雷斯托的后面。您可以使用TABLESAMPLE获取表格的随机样本。

比方说,你希望你的表的10%的样本,你的查询将是这样的:

SELECT id FROM mytable TABLESAMPLE BERNOULLI(10)

注重有伯努利和系统取样。 Here是它的文档。