如何从大结果集中快速选择样本集?

时间:2018-03-14 14:59:44

标签: mysql

我有一个很大的结果集(R1)(几百万行),我想从中快速选择一个样本集。

我正在使用https://stackoverflow.com/a/25994039/601147,但速度太慢了。

有人知道更好的解决方案吗? 感谢

1 个答案:

答案 0 :(得分:0)

如果您有自动增量列,则可以查询最小和最大ID,并让您的应用生成n随机ID lowest < random-ID < largest,您可以使用SELECT ... WHERE ... IN (<your-random-ids>)进行选择。

IN部分中的值数量在MySQL上限制为max_allowed_packet。因此,您可能必须在多个IN - 查询上拆分列表。

也不是所有随机ID都可能存在,因此您必须检查返回的行数,并使用相同的过程再次填充剩余的列表,直到您有足够的值。