sql >> Database >  >> RDS >> Sqlserver

Waarom zijn SQL-server-inserts zo traag?

U voert elke invoeging uit binnen zijn eigen transactie.

Het starten en uitvoeren van een transactie is zeer duur in SQL Server .

Sluit alles in een enkel transactieblok in:

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

Om voorbeeldgegevens te genereren, kunt u een recursieve CTE . gebruiken :

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)

, wat sneller zal zijn.



  1. Sla de uitvoer van mysql-query's op in een shell-variabele

  2. Ondersteunt Oracle zoeken in volledige tekst?

  3. Back-up van SQL Server 2014 herstellen in SQL Server 2008

  4. Wijzig de MySQL-tabel om opmerkingen over kolommen toe te voegen