我有一个SQL Server表,其中包含大约50,000行.我想随机选择大约5,000行.我想到了一个复杂的方法,创建一个带有"随机数"列的临时表,将我的表复制到其中,循环遍历临时表并用每个行更新RAND(),然后从该表中选择随机数列< 0.1.我正在寻找一种更简单的方法,如果可能的话,在一个声明中.
本文建议使用该NEWID()功能.这看起来很有希望,但我看不出如何可靠地选择一定比例的行.
有人曾经这样做过吗?有任何想法吗?
从大型mysql表中选择随机行的快速方法是什么?
我在php工作,但我对任何解决方案感兴趣,即使它是用另一种语言.
我在多个子文件夹中的.txt文件中有很多任务.我试图从这些文件夹,它们包含的文件以及文件中的文本行中随机选取总共10个任务.应删除或标记选定的行,以便在下次执行时不会选择它.这可能是一个太宽泛的问题,但我很欣赏任何意见或方向.
这是我到目前为止的代码:
#!/usr/bin/python
import random
with open('C:\\Tasks\\file.txt') as f:
lines = random.sample(f.readlines(),10)
print(lines)
Run Code Online (Sandbox Code Playgroud) 我正在寻找一种有效的方法,从MySQL表中随机选择满足某些条件的100行,可能有数百万行.
我发现的几乎所有内容都建议避免使用ORDER BY RAND(),因为性能和可伸缩性都很差.
但是,本文建议ORDER BY RAND()仍然可以用作获取randow数据的"漂亮而快速的方法".
基于这篇文章,下面是一些示例代码,展示了我正在努力实现的目标.我的问题是:
这是一种从表中随机选择100行(或多达数百行)的有效方式,可能有数百万行吗?
性能何时成为问题?
SELECT user.*
FROM (
SELECT id
FROM user
WHERE is_active = 1
AND deleted = 0
AND expiretime > '.time().'
AND id NOT IN (10, 13, 15)
AND id NOT IN (20, 30, 50)
AND id NOT IN (103, 140, 250)
ORDER BY RAND()
LIMIT 100
)
AS random_users
STRAIGHT JOIN user
ON user.id = random_users.id
是否可以从.Rdata对象或存储在磁盘上的任何其他大型数据对象中绘制引导样本?我目前从非常大的数据中采样的方法是构建一个本地MySQL数据库,然后使用SQL将随机样本绘制到R中.不幸的是,MySQL中的采样和排序根本没有效率.我想知道是否有人为此用例设计了更好的解决方案.
要了解我当前的解决方案,请参阅MySQL中的采样问题: 来自Sql数据库的简单随机样本