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

pesan oleh newid() - bagaimana cara kerjanya?

Saya tahu apa yang dilakukan NewID(), saya hanya mencoba memahami bagaimana hal itu akan membantu dalam pemilihan acak. Apakah itu (1) pernyataan pilih akan memilih SEMUA dari tabel saya, (2) untuk setiap baris yang dipilih, tempelkan pada pengidentifikasi unik yang dihasilkan oleh ID Baru (), (3) urutkan baris berdasarkan pengidentifikasi unik ini dan (4) pilih 100 teratas dari daftar yang diurutkan ?

Ya. ini cukup tepat (kecuali tidak perlu mengurutkan semua baris). Anda dapat memverifikasi ini dengan melihat rencana eksekusi yang sebenarnya.

SELECT TOP 100 * 
FROM master..spt_values 
ORDER BY NEWID()

Operator skalar komputasi menambahkan NEWID() kolom aktif untuk setiap baris (2506 dalam tabel dalam contoh kueri saya) maka baris dalam tabel diurutkan berdasarkan kolom ini dengan 100 teratas dipilih.

SQL Server sebenarnya tidak perlu mengurutkan seluruh rangkaian dari posisi 100 ke bawah sehingga menggunakan TOP N operator sortir yang mencoba melakukan seluruh operasi sortir dalam memori (untuk nilai kecil N )



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Temukan nilai maksimal dan tampilkan nilai yang sesuai dari bidang yang berbeda di server SQL

  2. Konversi Baris ke kolom menggunakan 'Pivot' di SQL Server

  3. Apakah kunci asing secara otomatis membuat indeks?

  4. Bagaimana saya bisa memaksa kerangka kerja entitas untuk memasukkan kolom identitas?

  5. Bagaimana cara menghasilkan id unik secara otomatis dalam SQL seperti UID12345678?