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

Bagaimana saya bisa memasukkan nilai acak ke dalam tabel SQL Server?

Saat mesin kueri melihat ini...

(SELECT TOP 1 [val] FROM @randomStuff ORDER BY NEWID())

... semuanya seperti, "ooooh, subquery skalar yang dapat di-cache, saya akan menyimpannya di cache!"

Anda perlu mengelabui mesin kueri agar menganggapnya tidak dapat disimpan dalam cache. jfar jawab dekat, tetapi mesin kueri cukup pintar untuk melihat tautalogi MyTable.MyColumn = MyTable.MyColumn , tapi tidak cukup pintar untuk melihat ini.

UPDATE MyTable
   SET MyColumn = (SELECT TOP 1 val
                     FROM @randomStuff r
                          INNER JOIN MyTable _MT
                                  ON M.Id = _MT.Id
                    ORDER BY NEWID())
 FROM MyTable M

Dengan memasukkan tabel luar (MT) ke dalam subquery, mesin kueri mengasumsikan subquery perlu dievaluasi ulang. Apa pun akan benar-benar berfungsi, tetapi saya menggunakan kunci utama (diasumsikan) dari MyTable.Id karena akan diindeks dan akan menambahkan sedikit overhead.

Kursor mungkin sama cepatnya, tetapi tentu saja tidak semenyenangkan ini.



  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 memeriksa tanggal perubahan terakhir dalam prosedur atau fungsi tersimpan di SQL server

  2. Entity Framework EF4.1 - prosedur tersimpan tidak dapat ditemukan di wadah

  3. Bagaimana @@MAX_CONNECTIONS Bekerja di SQL Server

  4. Kembalikan Informasi Kolom dari Server Tertaut di SQL Server (Contoh T-SQL)

  5. Berat hamming/jumlah populasi di T-SQL