
【2】方法二:通過dbms_random.value

【3】方法三:通過采樣表掃描

下面我們通過實踐來比較這3種方法的效率,首先我們創(chuàng)建一個包含有10W條記錄的表用于實驗:





接下來我們插入10W條數(shù)據(jù)












在SQL*PLUS下設置顯示SQL語句執(zhí)行時間:set timing on,讓后分別運行上述三條語句:
第一個的執(zhí)行時間為 00: 00: 16: 04
第二個的執(zhí)行時間為 00: 00: 54: 04
第三個的執(zhí)行時間為 00: 00: 08: 07
從這里我們可以看出在進行數(shù)據(jù)隨機抽取時,采用sample的方法效率是最高的。為了保證每次隨機查詢的數(shù)據(jù)盡量不重復,我們可以把sample中的百分比提高一些(例如從10%提高到20%)。
關于Oracle Sample的介紹和用法,請參考eygle他老人家的一篇文章介紹:如何從結(jié)果集中獲得隨機結(jié)果
-------------------------------------------------------------
生活就像打牌,不是要抓一手好牌,而是要盡力打好一手爛牌。