如何以更优化的方式从数据库中获取随机行

时间:2016-05-19 03:35:56

标签: mysql sql oracle

嗨我知道如何获得随机行但我需要一种优化的方式,我在oracle中将大量数据从一个模式迁移到另一个模式。除了在每个表上执行 count 验证。我正在做随机记录验证(对于任何随机行,我正在检查数据库之间的所有列值是否匹配)。我正在使用

SELECT * FROM (SELECT * FROM  ADM_USER ORDER BY dbms_random.value) WHERE rownum = 1;

在此之前我正在使用:

 select * from ADM_USER where ADM_USER_ID=(select Round(dbms_random.value(1,max(ADM_USER_ID))) from ADM_USER)

后者的问题是ADM_USER_ID中的值不是连续的。因此大多数情况下查询返回空结果集。第一个是好的,但对于具有巨大基数的表格,它需要6到7个seconnds。

提前致谢。

1 个答案:

答案 0 :(得分:1)

对于Oracle,请查看SAMPLE子句。以下将查看表的随机1%

select * from MDSYS.SDO_COORD_REF_SYS sample(1);

您仍然可以添加rownum=1过滤器。