Oracle實現(xiàn)某表隨機抽取數(shù)據(jù)(隨機性抽取)
更新時間:2024年08月12日 14:59:11 作者:蝸牛_小吳
這篇文章主要介紹了Oracle實現(xiàn)某表隨機抽取數(shù)據(jù)(隨機性抽取),具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
Oracle實現(xiàn)某表隨機抽取數(shù)據(jù)
目前我知道的三種方式:
1. 使用隨機數(shù)
select * from ( select * from t_table order by dbms_random.value ) where rownum <= 1000
- 概述 : 這種方式相對比較原始 , 就是 更具隨機的值進行 排序 , 然后 再進行 獲取 前 1000 行數(shù)據(jù) .
- 優(yōu)點 : 隨機性 好
- 缺點 : 性能差 (當進行獲取的數(shù)據(jù)量 越大 , 執(zhí)行的時間就越長 )
2. 使用sample函數(shù)
select * from t_table sample(10) where rownum <=1000
- 概述 : sample函數(shù) 旨在 隨機樣本抽取 , 但是涵蓋的數(shù)據(jù) 分布 非常不均勻 .
- 優(yōu)點 : 性能好 (執(zhí)行的時間相對比較短)
- 缺點 : 隨機性差(因為涵蓋的數(shù)據(jù)分布非常不均勻)
3. 結合上述兩種方式(隨機數(shù)+sample函數(shù))
select * from ( select * from t_table sample(10) order by dbms_random.value ) where rownum <= 1000
- 概述 : 這種是先使用sample函數(shù) 抽取部分數(shù)據(jù), 再使用隨機數(shù)進行排序 .
- 優(yōu)點 : 性能相對較好 (比方式一 性能好 , 比方式二 隨機性好)
- 缺點 : 數(shù)據(jù)命中率不能達到 百分百 (因為使用了 sample函數(shù) , 當數(shù)據(jù)量比較少時 , 不能保證每次都能返回 獲取的樣本數(shù)據(jù) , 抽樣的表不能用 dblink[數(shù)據(jù)庫連接])
Oracle數(shù)據(jù)庫:隨機查詢100條數(shù)據(jù)
方法一
SELECT m.* FROM (SELECT u.* FROM USER_INFO u order by dbms_random.value()) m where rownum < 100;
注:USER_INFO約40w條數(shù)據(jù).
方法二
SELECT * FROM USER_INFO SAMPLE(50) WHERE ROWNUM < 101;
總結
以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
Oracle數(shù)字類型number自增的實現(xiàn)代碼
這篇文章主要介紹了Oracle數(shù)字類型number自增的實現(xiàn)代碼,需要的朋友可以參考下2017-08-08Oracle數(shù)據(jù)庫把多行轉一列逗號分割兩種方法
Oracle將行轉換為列是指將關系型數(shù)據(jù)庫中的行數(shù)據(jù)轉換為列數(shù)據(jù)的操作,這篇文章主要給大家介紹了關于Oracle數(shù)據(jù)庫把多行轉一列逗號分割兩種方法的相關資料,需要的朋友可以參考下2024-07-07Oracle數(shù)據(jù)庫執(zhí)行腳本常用命令小結
這篇文章主要介紹了Oracle數(shù)據(jù)庫執(zhí)行腳本常用命令小結的相關資料,需要的朋友可以參考下2015-12-12