如何从表中随机选择行?表非常大,从表中获取随机行的有效方法是什么。有什么建议吗?
http://ghtorrent.org/mysql.html
ssh -L 3306:web.ghtorrent.org:3306 ghtorrent@web.ghtorrent.org
on the other terminal 2
mysql -u ght -h 127.0.0.1 ghtorrent
select * from commits order by rand() limit 100000;
3条答案
按热度按时间qni6mghb1#
您可以通过以下操作获取大约1%的样本:
这将需要读取整个表,但只需要读取一次。
这可能是获得随机样本的最佳方法。还有其他方法可以获得单个随机行或任意样本。
flvtvl502#
我不是这方面的Maven,但我建议如下:
$rand = rand();
select * from commits limit $rand,10000
;只要确保你选择了一个随机数,这样在随机行数之后就有10k行了。
tv6aics13#
尝试以下基于mysql的方法:
说明:
如果commit\u id是整数,则使用repeat生成随机id,然后插入temp表。
从table=commits中查询出提交id存在于temp table=retreivepooltable中的行。
缺点:某些commit\u id可能不存在,因此脚本必须多次执行此过程,直到产生足够的行。
如果commit\u id是一个类似于uuid的字符串,那么它会更复杂,但思想是一样的。
如果您想查询特定日期范围和提交id之间的随机行,随机id生成器将是: