Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Защо вмъкванията на SQL сървър са толкова бавни?

Вие извършвате всяко вмъкване в собствена транзакция.

Започването и извършването на транзакция е много скъпо в SQL Server .

Оградете всичко в един блок за транзакции:

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

За да генерирате примерни данни, можете да използвате рекурсивен 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)

, което ще бъде по-бързо.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Възникна грешка на ниво транспорт при получаване на резултати от сървъра

  2. Как да изброите файлове в папка със SQL Server

  3. Попълване на набор от данни с имена на таблици от съхранена процедура

  4. Как да изтрия дублирани данни от SQL таблица

  5. Как мога да намеря символи Unicode/не-ASCII в поле NTEXT в таблица на SQL Server 2005?