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

來源:互聯網
上載者:User

標籤:

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

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

 

2、使用sample獲得隨機結果集 

2.1、文法: SAMPLE [ BLOCK ](sample_percent)[ SEED (seed_value) ]  

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

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

sample_percent:是隨機擷取一張表中記錄的百分比。比如值為10,那就是表中的隨機的百分之10的記錄。 

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

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

2.2、舉例說明 

   建立測試暫存資料表: 

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 



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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.