【转】oracle 中随机取数据的方法
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了【转】oracle 中随机取数据的方法,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2053字,纯文字阅读大概需要3分钟。
内容图文
![【转】oracle 中随机取数据的方法](/upload/InfoBanner/zyjiaocheng/514/7d140768793845a3917b73c5740718d1.jpg)
oracle 中随机取数据的方法:
1.快速随机取数据(推荐使用):
select * from MEMBER sample(1) where rownum <= 10
2.随机取数据,较慢
select * from (
select * from MEMBER order by dbms_random.value
) where rownum<=10
========原文========
最近在做系统时用到了随机抽取记录的问题;
上网上查找了很多相关资料,发现了不同的方法及其差异。都是基于ORACLE的方法哦
首先第一个是随机抽取6个
select * from (select * from tablename order by order by dbms_random.value) where rownum<7
这个方法的原理我认为应该是把表中的数据全部查询出来按照随机数进行排列后在从查询出来的数据中查询中6条记录,这个方法我在使用的过程中发现,如果记录一多的话查询的速度有一点点的慢,测试时是7000条,如果几万几十万的话可能就更慢了;
第二个是利用oracle的sample()或sample block方法
select * from tablename sample ( 50 ) where rownum<6
这个稍稍介绍一下sample
Oracle访问数据的基本方法有:
1.全表扫描
2.采样表扫描
全表扫描(Full table Scan)
全表扫描返回表中所有的记录。
执行全表扫描,Oracle读表中的所有记录,考查每一行是否满足WHERE条件。Oracle顺序的读分配给该表的每一个数据块,这样全表扫描能够受益于多块读.
每个数据块Oracle只读一次.
采样表扫描(sample table scan)
采样表扫描返回表中随机采样数据。
这种访问方式需要在FROM语句中包含SAMPLE选项或者SAMPLE BLOCK选项.
SAMPLE选项:
当按行采样来执行一个采样表扫描时,Oracle从表中读取特定百分比的记录,并判断是否满足WHERE子句以返回结果。
SAMPLE BLOCK选项:
使用此选项时,Oracle读取特定百分比的BLOCK,考查结果集是否满足WHERE条件以返回满足条件的纪录.
Sample_Percent:
Sample_Percent是一个数字,定义结果集中包含记录占总记录数量的百分比。
Sample值应该在[0.000001,99.999999]之间。
主要注意以下几点:
1.sample只对单表生效,不能用于表连接和远程表
2.sample会使SQL自动使用CBO
【转】oracle 中随机取数据的方法
标签:条件 一个 不能 随机数 顺序 table 问题 bms 扫描
本文系统来源:https://www.cnblogs.com/yscit/p/11660820.html
内容总结
以上是互联网集市为您收集整理的【转】oracle 中随机取数据的方法全部内容,希望文章能够帮你解决【转】oracle 中随机取数据的方法所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。