sql >> Database teknologi >  >> RDS >> Sqlserver

Hvorfor er SQL-serverindsættelser så langsomme?

Du udfører hver indsættelse i sin egen transaktion.

Begyndende og forpligtende transaktion er meget dyrt i SQL Server .

Omslut alt i en enkelt transaktionsblok:

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

For at generere eksempeldata kan du bruge 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)

, hvilket vil være hurtigere.



  1. Skal PostgreSQL-forbindelser samles i en Python-webapp eller oprette en ny forbindelse pr. anmodning?

  2. SQL-syntaks eller databasebegrænsninger?

  3. ORA-12560:TNS:protokoladapterfejl

  4. Bulk Record Update med SQL