oracle数据库随机取样的几种方式比较

来源:互联网 发布:股市和楼市的关系 知乎 编辑:程序博客网 时间:2024/05/22 05:09

首先介绍一下Oracle访问数据的两种基本方法:全表扫描和采样表扫描

1、全表扫描(Full table Scan):全表扫描返回表中所有的记录。
执行全表扫描,Oracle读表中的所有记录,考查每一行是否满足WHERE条件。Oracle顺序的读分配给该表的每一个数据块,这样全表扫描能够受益于多块读,每个数据块Oracle只读一次。

2、采样表扫描(sample table scan):采样表扫描返回表中随机采样数据。
这种访问方式需要在FROM语句中包含SAMPLE选项或者SAMPLE BLOCK选项.

2.1、SAMPLE选项:当按行采样来执行一个采样表扫描时,Oracle从表中读取特定百分比的记录,并判断是否满足WHERE子句以返回结果。

2.2、 SAMPLE BLOCK选项:使用此选项时,Oracle读取特定百分比的BLOCK,考查结果集是否满足WHERE条件以返回满足条件的纪录。Sample值应该在[0.000001,99.999999]之间。
主要注意以下几点:

  • 1.sample只对单表生效,不能用于表连接和远程表;
  • 2.sample会使SQL自动使用CBO

根据以往使用历史,用过下边三种随机抽样方法,并对他们的随机性及性能(查询速度)对比做个展示:

第一种:

select * from (select * from table order by dbms_random.value) where rownum <= 5

描述:先把表中的数据全部查询出来并按照随机数进行排列,然后再从查询出来的数据中选择前5条。
优点:随机性最好
缺点:性能最差

第二种:

select * from table sample(50) where rownum<=5

描述:从表中读取50%的记录,并返回结果表中5条记录
优点:性能最好
缺点:随机性最差

第三种:

select * from (select * from table sample(50) order by dbms_random.value) where rownum <= 5

描述:是前两种方法的折中,先把表中的数据读取50%的记录并按照随机数进行排列,然后再从查询出来的数据中选择前5条。
优点:性能好
缺点:随机性差

阅读全文
'); })();
1 0
原创粉丝点击
热门IT博客
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 悍马轮胎 2019款哈弗f7真实油耗 吉利缤瑞真差问题真多油耗大 油耳朵是怎么回事 油耳朵怎么清理 油耳朵 油耳朵怎么办 有油耳朵就有狐臭吗 女孩油耳朵一定有狐臭 宝宝油耳朵会是狐臭吗 耳朵油 耳朵容易出油 耳朵里油 耳朵出油怎么回事 耳朵有油 耳朵里有油 耳朵很油是怎么回事 耳朵油怎么办 耳朵出油 耳朵油是什么原因 耳朵里面油 耳朵出油是什么原因 耳朵里很油 耳朵里油油的怎么回事 耳朵出油是怎么回事 油耳朵一定有狐臭 小孩油耳朵怎么办 耳朵流油 耳朵滴油 油耳朵图片 为什么耳朵会出油 油耳朵怎么变成干耳 油耳图片 油耳都有狐臭吗 油耳狐臭怎么办 婴儿油耳 油耳的人一定有狐臭吗 腋臭和油耳 狐臭和油耳有什么关系 油耳是什么 油耳的人都有狐臭吗