抽样表扫描

抽样表扫描

抽样表扫描(sample table scan)只读取一个表的部分数据。其实我们只选择表的部分数据的话,可以用rownum来限制也很方便。但是考虑如下情况:
A表和B表join,我只想A表的部分数据去连接B表,此时用sample就方便的多。如果用rownum就需要用一个subquery。
-- 用Sample:
select  A.id,A.name  from  A sample block( 20 ),B 
where  A.id = B.id
-- 用Rownum:
select  A.id,A.name  from  ( select  a.id,a.name  from  a  where  rownum < 100 ) A,B 
where  A.id = B.id

抽样表扫描有两种形式,一种是抽样表中行数的一个百分比,一个是抽样表中块数的一个百分比。注意都是百分比。语法如下:

SELECT   *   FROM  employees SAMPLE ( 1 ); -- 返回行数乘以1%
SELECT   *   FROM  employees SAMPLE BLOCK ( 1 ); -- 返回块数乘以1%

也可以在视图上使用SAMPLE。

你可能感兴趣的:(抽样表扫描)