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. 結(jié)合上述兩種方式(隨機數(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;
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Oracle數(shù)字類型number自增的實現(xiàn)代碼
這篇文章主要介紹了Oracle數(shù)字類型number自增的實現(xiàn)代碼,需要的朋友可以參考下2017-08-08Oracle ASM故障數(shù)據(jù)恢復(fù)解決方案
在本篇文章里小編給大家整理的是關(guān)于Oracle ASM故障數(shù)據(jù)恢復(fù)解決方案以及相關(guān)知識點,有需要的朋友們參考下。2019-11-11深刻理解Oracle數(shù)據(jù)庫的啟動和關(guān)閉
深刻理解Oracle數(shù)據(jù)庫的啟動和關(guān)閉...2007-03-03Oracle數(shù)據(jù)庫把多行轉(zhuǎn)一列逗號分割兩種方法
Oracle將行轉(zhuǎn)換為列是指將關(guān)系型數(shù)據(jù)庫中的行數(shù)據(jù)轉(zhuǎn)換為列數(shù)據(jù)的操作,這篇文章主要給大家介紹了關(guān)于Oracle數(shù)據(jù)庫把多行轉(zhuǎn)一列逗號分割兩種方法的相關(guān)資料,需要的朋友可以參考下2024-07-07Oracle數(shù)據(jù)庫執(zhí)行腳本常用命令小結(jié)
這篇文章主要介紹了Oracle數(shù)據(jù)庫執(zhí)行腳本常用命令小結(jié)的相關(guān)資料,需要的朋友可以參考下2015-12-12