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

SQL サーバーの挿入が非常に遅いのはなぜですか?

    それぞれの挿入を独自のトランザクション内で実行します。

    トランザクションの開始とコミットはとても SQL Server で高価 .

    すべてを単一のトランザクション ブロックに含めます:

    declare @i int
    set @i = 0
    set nocount on
    BEGIN TRANSACTION
    while @i < 2000
    begin
    insert into testdb(testcolumn)
    values (1)
    set @i = @i + 1
    end
    COMMIT
    

    サンプル データを生成するには、再帰的な CTE を使用できます :

    WITH    q (num) AS
            (
            SELECT  1
            UNION ALL
            SELECT  num + 1
            FROM    q
            WHERE   num < 2000
            )
    INSERT
    INTO    testdb(testcolumn)
    SELECT  1
    FROM    q
    OPTION (MAXRECURSION 0)
    

    、より高速になります。



    1. SSRSの逆日付ソートデータでPrevious()関数を使用しますか?

    2. ProxySQLノードのパフォーマンスはどれくらいですか?

    3. 一般的なデータベースサーバーの構築と展開の手順

    4. 行を同時に SELECT と UPDATE する方法はありますか?