sql >> Databáze >  >> RDS >> Sqlserver

Aktualizace velkého počtu řádků - SQL Server 2005

Máte v cílové tabulce sloupec indexované identity? Toto je jeden z mála případů, kdy skutečně rád používám smyčku WHILE. Hlavním problémem s řešením v odkazu, který jste zveřejnili, je špatné použití indexu.

    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

V případech, kdy máte náhradní klíč (sloupec identity jako primární klíč), což není tak neobvyklé, způsobí to jednoduché hledání indexu na primárním klíči a je nastavitelné jednoduše podle velikosti růstu (v příkladu 5000)




  1. Jak mohu používat MySQL ve Visual Studiu 2010 s EF4?

  2. Nejlepší způsob, jak se vypořádat s datem při ukládání záznamů pro vyhledávač v MySQL?

  3. Potvrzení a transakce MySQL

  4. Pokyny krok za krokem pro instalaci Oracle Virtual Box