sql >> データベース >  >> RDS >> Sqlserver

多数の行を更新する - SQL Server 2005

    ターゲット表に索引付けされた ID 列がありますか?これは、私が実際に WHILE ループを使用したい数少ないケースの 1 つです。あなたが投稿したリンクの解決策の主な問題は、不適切なインデックスの使用です。

        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
    

    それほど珍しくない代理キー (主キーとしての ID 列) がある場合、これは主キーで単純なインデックス シークを引き起こし、単純に増加量 (例では 5000) によって調整できます。




    1. PostgreSQL 11:新機能

    2. 1つの送信ボタンで一度にmysqlテーブルに複数の入力を行う

    3. SIDの代わりにサービス名を使用してOracleに接続する方法

    4. PostgreSQLを使用してRailsでエラー「fe_sendauth:パスワードが提供されていません」を解決するにはどうすればよいですか?