oracle隨機抽取表中的n條記錄

採樣表掃描(sample table scan):掃描返回表中隨機採樣數據,這種訪問方式須要在FROM語句中包含SAMPLE選項或者SAMPLE BLOCK選項.測試

注:從Oracle8i開始Oracle提供採樣表掃描特性 spa

 

二、使用sample得到隨機結果集 table

2.一、語法: SAMPLE [ BLOCK ](sample_percent)[ SEED (seed_value) ]  object

SAMPLE選項:表示按行採樣來執行一個全表掃描,Oracle從表中讀取特定百分比的記錄,並判斷是否知足WHERE子句以返回結果。 select

BLOCK: 表示使用隨機塊例舉而不是隨機行例舉。 語法

sample_percent:是隨機獲取一張表中記錄的百分比。好比值爲10,那就是表中的隨機的百分之10的記錄。 數據

               值必須大於等於.000001,小於100。 查詢

SEED:表示從哪條記錄返回,相似於預先設定例舉結果,於是每次返回的結果都是固定的。該值必須介於0和4294967295之間。 db

2.二、舉例說明 tab

   建立測試臨時表: 

Sql代碼 

SQL>create table zeeno as select * from dba_objects;      

1)、sample(sample_percent):

Sql代碼 

-- 從表zeeno中「全表掃描」隨機抽取10%的記錄,隨機查詢5條記錄    

SQL>select object_name from zeeno sample(10) where rownum<6;    

  

OBJECT_NAME    

--------------------------------------------------------------------------------    

UET$    

VIEW$    

I_SUPEROBJ2    

TRIGGERCOL$    

I_VIEW1       

                             

SQL&gt; /    

  

OBJECT_NAME    

--------------------------------------------------------------------------------    

I_FILE1    

IND$    

CLU$    

FET$    

I_COBJ#    

    

2)、sample block(sample_percent) 

Sql代碼 

-- 從表zeeno中「採樣表掃描」隨機抽取10%的記錄,隨機查詢5條記錄    

SQL> select object_name from zeeno sample block(10) where rownum<6;    

    www.2cto.com  

OBJECT_NAME    

--------------------------------------------------------------------------------    

URIFACTORY    

DBMS_XMLGEN    

DBMS_XMLGEN    

DBMS_XMLSTORE    

DBMS_XMLSTORE    

    

 3)、sample block(sample_percent) seed(seed_value) 

Sql代碼 

-- 使用seed,返回固定的結果集。從表zeeno中「採樣表掃描」隨機抽取10%的記錄,隨機查詢5條記錄。    

SQL> select object_name from zeeno sample(10) seed(10) where rownum<6;    

  

OBJECT_NAME    

--------------------------------------------------------------------------------    

UET$    

I_CON1    

I_FILE2    

FET$    

I_COL1    

  

SQL&gt; select object_name from zeeno sample(10) seed(10) where rownum&lt;6;    

  

OBJECT_NAME    

--------------------------------------------------------------------------------    

UET$    

I_CON1    

I_FILE2    

FET$    

I_COL1    

    

注意如下幾點:

1.sample只對單表生效,不能用於錶鏈接和遠程表

2.sample會使SQL自動使用CBO 

相關文章
相關標籤/搜索