Oracle
 sql >> डेटाबेस >  >> RDS >> Oracle

लाखों पंक्तियों वाली तालिका के साथ ऑरैकल में यादृच्छिक पंक्तियों का चयन कैसे करें?

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 ट्यून करना चाहिए आप जो ला रहे हैं उसके लिए उपयुक्त नमूना आकार का उपयोग करने के लिए खंड।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. लगातार दिनांक वैधता अंतराल को एक साथ जोड़ना

  2. खाली स्ट्रिंग का उपयोग करके शून्य मानों के साथ प्राथमिक कुंजी कैसे प्राप्त करें?

  3. परिणामसेट यूनिकोड वर्णों के लिए स्ट्रिंग वर्ण एन्कोडिंग प्राप्त करें

  4. सी # में ट्रीव्यू से चेकबॉक्स चेक वैल्यू कैसे प्राप्त करें?

  5. SQL*Plus SQL स्क्रिप्ट निष्पादित नहीं करता है जो SQL डेवलपर करता है