В SQL Server эффективная вставка нескольких строк в таблицу может значительно повысить производительность операций с базой данных. В этой статье рассматривается несколько методов и приводятся примеры кода, которые помогут вам добиться эффективной вставки нескольких строк.
Метод 1: использование оператора INSERT INTO SELECT
Одним из распространенных методов вставки нескольких строк является использование оператора INSERT INTO SELECT. Этот подход позволяет выбрать данные из существующей таблицы или временной таблицы и вставить их в другую таблицу. Вот пример:
INSERT INTO TargetTable (Column1, Column2, Column3)
SELECT Column1, Column2, Column3
FROM SourceTable;
Метод 2: использование оператора UNION ALL
Другой подход заключается в использовании оператора UNION ALL для объединения нескольких операторов SELECT. Каждый оператор SELECT представляет вставляемую строку. Вот пример:
INSERT INTO TargetTable (Column1, Column2, Column3)
SELECT Value1, Value2, Value3
UNION ALL
SELECT Value4, Value5, Value6
UNION ALL
SELECT Value7, Value8, Value9;
Метод 3: использование предложения VALUES
Предложение VALUES позволяет вставлять несколько строк в один оператор. Вы можете указать значения непосредственно в предложении VALUES. Вот пример:
INSERT INTO TargetTable (Column1, Column2, Column3)
VALUES (Value1, Value2, Value3),
(Value4, Value5, Value6),
(Value7, Value8, Value9);
Метод 4: использование оператора INSERT INTO EXEC
Если у вас есть данные, которые необходимо вставить во временную таблицу или табличную переменную, вы можете использовать оператор INSERT INTO EXEC. Этот метод выполняет хранимую процедуру или динамически создаваемую инструкцию SQL, которая вставляет строки. Вот пример:
INSERT INTO TargetTable (Column1, Column2, Column3)
EXEC dbo.InsertRows; -- InsertRows is a stored procedure or dynamically built SQL statement
Метод 5: использование оператора BULK INSERT
Для больших наборов данных оператор BULK INSERT является наиболее эффективным методом. Он позволяет вставлять данные из файла в таблицу. Вот пример:
BULK INSERT TargetTable
FROM 'C:\Data\SourceData.csv'
WITH (FIELDTERMINATOR = ',', ROWTERMINATOR = '\n');
Эффективная вставка нескольких строк в SQL Server имеет решающее значение для оптимизации производительности базы данных. В этой статье описано несколько методов, в том числе использование INSERT INTO SELECT, UNION ALL, предложения VALUES, INSERT INTO EXEC и BULK INSERT. Выберите метод, который лучше всего соответствует вашим требованиям и размеру данных, чтобы добиться оптимальной производительности в вашей среде SQL Server.