Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Dlaczego wstawianie serwera SQL jest tak powolne?

Każdą wstawkę wykonujesz w ramach własnej transakcji.

Rozpoczęcie i zatwierdzenie transakcji jest bardzo drogie w SQL Server .

Zamknąć wszystko w jednym bloku transakcji:

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

Aby wygenerować przykładowe dane, możesz użyć rekurencyjnego 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 będzie szybsze.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak używać FILEGROUPPROPERTY() w SQL Server

  2. Problemy płynne NHibernate z wartościami kolumn DATE w programie SQL Server 2008

  3. Jak z utworzonych tabel mogę zrobić tabelę harmonogramu dla instruktora?

  4. SELECT max(x) zwraca wartość null; jak mogę sprawić, żeby zwróciło 0?

  5. SQL Server odpowiednik DBMS_METADATA.GET_DDL