日期:2014-05-16  浏览次数:20442 次

Oracle中随机抽取N条记录

?

一、Oracle取随机数据?
1、Oracle访问数据的基本方法:?
1)、全表扫描(Full table Scan):执行全表扫描,Oracle读表中的所有记录,考查每一行是否满足WHERE条件。Oracle顺序的读分配给该表的每一个数据块,且每个数据块Oracle只读一次.这样全表扫描能够受益于多块读.?
??
2)、采样表扫描(sample table scan):扫描返回表中随机采样数据,这种访问方式需要在FROM语句中包含SAMPLE选项或者SAMPLE BLOCK选项.?
??
注:从Oracle8i开始Oracle提供采样表扫描特性?

??
2、使用sample获得随机结果集?
2.1、语法: SAMPLE [ BLOCK ](sample_percent)[ SEED (seed_value) ]??
SAMPLE选项:表示按行采样来执行一个全表扫描,Oracle从表中读取特定百分比的记录,并判断是否满足WHERE子句以返回结果。?
BLOCK: 表示使用随机块例举而不是随机行例举。?
sample_percent:是随机获取一张表中记录的百分比。比如值为10,那就是表中的随机的百分之10的记录。?
?????????????? 值必须大于等于.000001,小于100。?
SEED:表示从哪条记录返回,类似于预先设定例举结果,因而每次返回的结果都是固定的。该值必须介于0和4294967295之间。?
??
2.2、举例说明?
?? 创建测试临时表:?

Sql代码?复制代码
  1. SQL>create?table?zeeno?as?select?*?from?dba_objects; ? ? ?

1)、sample(sample_percent):

Sql代码?复制代码
  1. --?从表zeeno中“全表扫描”随机抽取10%的记录,随机查询5条记录????
  2. SQL>select?object_