当前位置: 代码网 > it编程>数据库>Oracle > Oracle实现某表随机抽取数据(随机性抽取)

Oracle实现某表随机抽取数据(随机性抽取)

2024年08月13日 Oracle 我要评论
oracle实现某表随机抽取数据目前我知道的三种方式:1. 使用随机数select * from ( select * from t_table order by dbms_random.

oracle实现某表随机抽取数据

目前我知道的三种方式:

1. 使用随机数

select * from (
      select * from  t_table order by dbms_random.value
) where rownum <= 1000
 
  • 概述 : 这种方式相对比较原始 , 就是 更具随机的值进行 排序 , 然后 再进行 获取 前 1000 行数据 .
  • 优点 : 随机性 好
  • 缺点 : 性能差 (当进行获取的数据量 越大 , 执行的时间就越长 )

2. 使用sample函数

select * from  t_table sample(10) where rownum <=1000
  • 概述 : sample函数 旨在 随机样本抽取 , 但是涵盖的数据 分布 非常不均匀 .
  • 优点 : 性能好 (执行的时间相对比较短)
  • 缺点 : 随机性差(因为涵盖的数据分布非常不均匀)

3. 结合上述两种方式(随机数+sample函数)

select * from (
    select * from t_table sample(10) order by dbms_random.value
) where rownum <= 1000 
  • 概述 : 这种是先使用sample函数 抽取部分数据, 再使用随机数进行排序 .
  • 优点 : 性能相对较好 (比方式一 性能好 , 比方式二 随机性好)
  • 缺点 : 数据命中率不能达到 百分百 (因为使用了 sample函数 , 当数据量比较少时 , 不能保证每次都能返回 获取的样本数据 , 抽样的表不能用 dblink[数据库连接])

oracle数据库:随机查询100条数据

方法一

select m.*
  from (select u.* from user_info u order by dbms_random.value()) m
 where rownum < 100;

注:user_info约40w条数据.

方法二

select * from user_info sample(50) where rownum < 101;

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com