嗨我知道如何获得随机行但我需要一种优化的方式,我在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。
提前致谢。
答案 0 :(得分:1)
对于Oracle,请查看SAMPLE子句。以下将查看表的随机1%
select * from MDSYS.SDO_COORD_REF_SYS sample(1);
您仍然可以添加rownum=1
过滤器。