如何从结果集中获得随机结果

法一:select * from (select * from fem_parties sample (Sample_Percent) ) where rownum < = n;

法二:select * from fem_parties where rownum<= n order by dbms_random.value

order by dbms_random.value的效率低

SAMPLE选项:
当按行采样来执行一个采样表扫描时,Oracle从表中读取特定百分比的记录,并判断是否满足WHERE子句以返回结果。

SAMPLE BLOCK选项:
使用此选项时,Oracle读取特定百分比的BLOCK,考查结果集是否满足WHERE条件以返回满足条件的纪录.

Sample_Percent:
Sample_Percent是一个数字,定义结果集中包含记录占总记录数量的百分比。
Sample值应该在[0.000001,99.999999]之间。

主要注意以下几点:

1.sample只对单表生效,不能用于表连接和远程表
2.sample会使SQL自动使用CBO

你可能感兴趣的:(oracle,sql)