MySQL, Oracle, Linux, 软件架构及大数据技术知识分享平台

网站首页 > 数据库 / 正文

ORACLE 随机获取表中数据的方法

2024-11-26 19:52 huorong 数据库 6 ℃ 0 评论

在实际工作中我们会遇到随机获取表中部分数据进行分析的案例(类似于随机取样)。本文针对此情况列举两个方法,做一下简单为介绍。下文以随机获取100条数据为例

1、rownum+dbms_random.random

一般我们随机获取数据,可以用rownum大于某个值来获取数据,脚本如下:

select * from <table> where rownum < 101

其实这种获取数据的方法并没有真正意义上实现“随机”,每次我们获取的数据是一样的。

真正随机获取数据,需要用到一个函数:dbms_random.random,dbms_random.random为获取任意大小的数据,我们每次查询都根据该值排序,即实现了“随机”的结果,正常查询脚本如下:

select * from (select * from <table> order by dbms_random.random) where rownum < 101

2、sample

sample的英文含义就有“样本”的意思。该统计是基于统计学统计返回数据,也是基于一个概率问题,因此返回数据量不一致,对此做以下说明:

A、 sample 是随机采样函数,参数是百分比,取值范围(0.00001,99.99999)

B、sample局限性较多:只对单表生效;不能用于表连接和远程表;短时间(几秒)内采样几乎相同;先采样再执行where子句

C、 sample会使sql自动使用CBO(cost-based SQL optimizer)

实例查询脚本如下:

返回1%的数据:select * from dfk_tj_all sample(1)

返回50%的数据:select * from dfk_tj_all sample(50)

Tags:导出oracle数据

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言