Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

cara membuat pemilihan baris acak di oracle lebih cepat dengan tabel dengan jutaan baris

Menggunakan nilai yang sesuai dari sample(x) adalah cara tercepat yang Anda bisa. Ini blok-acak dan baris-acak di dalam blok, jadi jika Anda hanya ingin satu baris acak:

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

Saya menggunakan tabel subpartisi, dan saya mendapatkan keacakan yang cukup baik bahkan mengambil beberapa baris:

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

Saya menduga Anda mungkin harus menyetel SAMPLE Anda klausa untuk menggunakan ukuran sampel yang sesuai untuk apa yang Anda ambil.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Urutan Partisi Oracle

  2. MODIFY COLUMN di Oracle - Bagaimana cara memeriksa apakah suatu kolom dapat dibatalkan sebelum disetel ke dapat dibatalkan?

  3. Cara menggunakan fungsi Analitik di oracle (Over Partition by Keyword)

  4. Bagaimana cara mengembalikan bolen di refcursor?

  5. Menggunakan database Oracle dengan CakePHP 2.0