python - 从 oracle 获取随机行的最有效方法

标签 python sql oracle random obfuscation

我有一个场景,我必须在数据库中混淆数据(=打乱,出于测试目的,因此不可能看到真实数据,不需要对其进行解密/取消混淆)。有几个表引用了address_table。我无法混淆地址表,所以我想我只需用随机的其他地址表 ID 更改这些表中的引用即可。地址表包含 6M+ 条记录。因此,我将创建一个包含所有地址 ID 的临时表,然后在需要时调用某个函数从那里获取一个随机地址。所以我可能会生成一个随机值并采用该行,如下所示:

Select * From (
Select Id, Rownum Rn From myTempTable )
WHERE  RN = x;

其中 x 是 dbms_random 生成的某个随机值。现在,虽然这是我所需要的,但它的表现与我的预期相差甚远。 我尝试过的另一件事是调用sample()函数,这(至少在小表上)执行得更好一些,但还不够好。

我知道有几个关于这个问题的线索,例如 thisthis on mySql ,但他们并没有直接从性能方面回答这个问题。

此外,我在使用 pl/sql 方面不受限制。我对pl/sql了解很少,它的性能怎么样?我的意思是,这只是数据库服务器处理队列中的另一个进程,也许我可以使用Python之类的东西在客户端进行处理(我的意思是生成更新脚本、填充随机数等),甚至考虑网络延迟等,从而获得更好的性能?有人有这方面的经验吗?

最佳答案

使用示例子句

select * from myTempTable SAMPLE(10);

这将仅返回 10% 的行。

关于python - 从 oracle 获取随机行的最有效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19949625/

相关文章:

c++ - 如何在 Oracle PRO*C 中按名称绑定(bind)

java - 为什么这个 hibernatetemplate 批量更新不起作用

python - 如何使用 Homebrew 程序安装库

python - 尝试在 tcl 中支持 python 代码

mysql - 多个平均值的平均值

mysql - 如何从三个表中计数?

python - 在每个期间的列中重新组织 pandas 定时日期

python - 这段 Python 代码的 Haskell 等价物

sql - Oracle/SQL-按时间按操作对项目进行分组

java - Oracle 触发器失败的原因可能是什么?