欢迎投稿

今日深度:

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

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


目录
  • Oracle实现某表随机抽取数据
    • 1. 使用随机数
    • 2. 使用sample函数
    • 3. 结合上述两种方式(随机数+sample函数)
  • Oracle数据库:随机查询100条数据
    • 方法一
    • 方法二
  • 总结

    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;

    总结

    以上为个人经验,希望能给大家一个参考,也希望大家多多支持PHP之友。

    您可能感兴趣的文章:
    • MySQL和Oracle的元数据抽取实例分析
    • 抽取oracle数据到mysql数据库的实现过程
    • Oracle 10g利用amdu抽取数据文件的方法教程

    www.htsjk.Com true http://www.htsjk.com/oracle/48430.html NewsArticle Oracle实现某表随机抽取数据(随机性抽取), 目录 Oracle实现某表随机抽取数据 1. 使用随机数 2. 使用sample函数 3. 结合上述两种方式(随机数+sample函数) Oracle数据库:随机查询100条数据 方法...
    评论暂时关闭