sql >> Databáze >  >> RDS >> Sqlserver

Proč jsou vkládání SQL serveru tak pomalé?

Každé vložení provedete v rámci vlastní transakce.

Zahájení a potvrzení transakce je velmi drahé na SQL Server .

Uzavřete vše do jediného transakčního bloku:

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

Chcete-li vygenerovat ukázková data, můžete použít rekurzivní 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)

, což bude rychlejší.



  1. Fixing Lock časový limit překročení; zkuste restartovat transakci pro „zaseknutou tabulku Mysql?

  2. Jak zobrazit data z databáze do textového pole a aktualizovat je

  3. Jak zachytit jedinečnou chybu omezení v bloku PL/SQL?

  4. GROUP BY vrátí první záznam