sample(x)
. के उपयुक्त मानों का उपयोग करना सबसे तेज़ तरीका है जो आप कर सकते हैं। यह ब्लॉक के भीतर ब्लॉक-यादृच्छिक और पंक्ति-यादृच्छिक है, इसलिए यदि आप केवल एक यादृच्छिक पंक्ति चाहते हैं:
select dbms_rowid.rowid_relative_fno(rowid) as fileno,
dbms_rowid.rowid_block_number(rowid) as blockno,
dbms_rowid.rowid_row_number(rowid) as offset
from (select rowid from [my_big_table] sample (.01))
where rownum = 1
मैं एक उपविभाजित तालिका का उपयोग कर रहा हूं, और मुझे कई पंक्तियों को हथियाने के लिए भी बहुत अच्छी यादृच्छिकता मिल रही है:
select dbms_rowid.rowid_relative_fno(rowid) as fileno,
dbms_rowid.rowid_block_number(rowid) as blockno,
dbms_rowid.rowid_row_number(rowid) as offset
from (select rowid from [my_big_table] sample (.01))
where rownum <= 5
FILENO BLOCKNO OFFSET
---------- ---------- ----------
152 2454936 11
152 2463140 32
152 2335208 2
152 2429207 23
152 2746125 28
मुझे संदेह है कि आपको शायद अपना SAMPLE
ट्यून करना चाहिए आप जो ला रहे हैं उसके लिए उपयुक्त नमूना आकार का उपयोग करने के लिए खंड।