Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Catatan acak dari tabel database (T-SQL)

Apakah ada cara ringkas untuk mengambil catatan acak dari tabel server sql?

Ya

SELECT TOP 1 * FROM table ORDER BY NEWID()

Penjelasan

Sebuah NEWID() dihasilkan untuk setiap baris dan tabel kemudian diurutkan berdasarkan itu. Catatan pertama dikembalikan (yaitu catatan dengan GUID "terendah").

Catatan

  1. GUID dihasilkan sebagai nomor pseudo-acak sejak versi empat:

    UUID versi 4 dimaksudkan untuk menghasilkan UUID dari nomor acak orpseudo-acak.

    Algoritmanya adalah sebagai berikut:

    • Tetapkan dua bit paling signifikan (bit 6 dan 7) dari clock_seq_hi_and_reserved masing-masing ke nol dan satu.
    • Setel empat bit paling signifikan (bit 12 hingga 15) dari bidang waktu_hi_dan_versi ke nomor versi 4-bit dari Bagian 4.1.3.
    • Setel semua bit lainnya ke nilai yang dipilih secara acak (atau pseudo-acak).

    —URN Namespace Pengidentifikasi Unik Universal (UUID) - RFC 4122

  2. Alternatif SELECT TOP 1 * FROM table ORDER BY RAND() tidak akan bekerja seperti yang dipikirkan orang. RAND() mengembalikan satu nilai tunggal per kueri, sehingga semua baris akan berbagi nilai yang sama.

  3. Meskipun nilai GUID adalah pseudo-acak, Anda memerlukan PRNG yang lebih baik untuk aplikasi yang lebih menuntut.

  4. Performa tipikal kurang dari 10 detik untuk sekitar 1.000.000 baris — tentu saja tergantung pada sistemnya. Perhatikan bahwa indeks tidak mungkin tercapai, sehingga kinerjanya akan relatif terbatas.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cara Memperbaiki "Fungsi partisi terkait menghasilkan lebih banyak partisi daripada grup file yang disebutkan dalam skema" Msg 7707 di SQL Server

  2. Perbaiki Msg 529 "Konversi eksplisit dari tipe data int ke xml tidak diizinkan" di SQL Server

  3. Pencarian teks lengkap tidak berfungsi jika kata berhenti disertakan meskipun daftar kata berhenti kosong

  4. Pencadangan SQL Server 2017 -1

  5. Kesalahan nama kolom yang ambigu pada satu server tertentu