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

Perbarui sejumlah besar baris - SQL Server 2005

Apakah Anda memiliki kolom identitas terindeks di tabel target? Ini adalah salah satu dari sedikit kasus di mana saya sebenarnya suka menggunakan loop WHILE. Masalah utama dengan solusi di tautan yang Anda posting adalah penggunaan indeks yang buruk.

    DECLARE @START INT, @FINISH INT, @LOOPEND INT
    SELECT @START = 1, @FINISH = 5000, @LOOPEND = MAX(ID)
    from Bla 

    WHILE @START <= @LOOPEND
    BEGIN
        update a
        set XML = b.xml
        from Bla as a
        inner join #temp as b on a.i = b.i
        WHERE a.ID BETWEEN @START AND @FINISH

        SET @START = @FINISH + 1
        SET @FINISH = @FINISH + 5000
    END

Dalam kasus di mana Anda memiliki kunci pengganti (kolom identitas sebagai kunci utama), yang tidak biasa, ini akan menyebabkan pencarian indeks sederhana pada kunci utama dan dapat disesuaikan hanya dengan jumlah pertumbuhan (5000 dalam contoh)




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

  2. Bagaimana cara memeriksa apakah string koneksi valid?

  3. Cara memilih tanggal setiap Senin dan setiap tanggal Jumat dalam setahun

  4. SQL Server 2008:Kesalahan mengonversi tipe data nvarchar ke float

  5. Kiat untuk meningkatkan kinerja DB yang di atas ukuran 40 GB (Sql Server 2005) dan bertambah setiap bulan sekitar 3 GB