sql >> Databasteknik >  >> RDS >> Sqlserver

Varför är SQL-serverinsättningar så långsamma?

Du utför varje infogning i sin egen transaktion.

Att börja och genomföra transaktionen är mycket dyrt i SQL Server .

Bifoga allt i ett enda transaktionsblock:

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

För att generera exempeldata kan du använda en rekursiv 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)

, vilket blir snabbare.



  1. Varning för användaren/local/mysql/datakatalogen ägs inte av mysql-användaren

  2. Oracle JDBC intermittent anslutningsproblem

  3. Hur man åtgärdar felaktigt strängvärde i MySQL

  4. Hur hittar man en sträng i en hel databas?