Что вам нужно делать с теми записями, которые существуют или не существуют в вашей таблице ??
В зависимости от того, что вам нужно, может быть, новый оператор MERGE
в SQL Server 2008 может соответствовать вашим требованиям - обновите то, что уже есть, вставьте новый материал, аккуратно завернутый в один оператор SQL. Проверьте это!
Ваше утверждение будет выглядеть примерно так:
MERGE INTO
(your target table) AS t
USING
(your source table, e.g. a temporary table) AS s
ON t.ID = s.ID
WHEN NOT MATCHED THEN -- new rows does not exist in base table
....(do whatever you need to do)
WHEN MATCHED THEN -- row exists in base table
... (do whatever else you need to do)
;
Чтобы сделать это действительно быстро, я бы загружал "новые" записи, например, из файл TXT или CSV во временную таблицу на сервере SQL с помощью BULK INSERT:
BULK INSERT YourTemporaryTable
FROM 'c:\temp\yourimportfile.csv'
WITH
(
FIELDTERMINATOR =',',
ROWTERMINATOR =' |\n'
)
BULK INSERT в сочетании с MERGE должен дать вам наилучшую производительность на этой планете: -)
Марк
PS: вот заметка от TechNet о производительности MERGE и почему она быстрее, чем отдельные заявления:
В SQL Server 2008 вы можете выполнять несколько операций на языке манипулирования данными (DML) в одном операторе, используя оператор MERGE. Например, вам может потребоваться синхронизировать две таблицы, вставляя, обновляя или удаляя строки в одной таблице на основе различий, обнаруженных в другой таблице. Как правило, это выполняется путем выполнения хранимой процедуры или пакета, который содержит отдельные операторы INSERT, UPDATE и DELETE. Однако это означает, что данные в исходной и целевой таблицах оцениваются и обрабатываются несколько раз; хотя бы один раз для каждого утверждения.
Используя оператор MERGE, вы можете заменить отдельные операторы DML одним оператором. Это может повысить производительность запросов, поскольку операции выполняются в одном операторе, что сводит к минимуму количество обработок данных в исходной и целевой таблицах. Однако прирост производительности зависит от наличия правильных индексов, объединений и других факторов. В этом разделе приведены рекомендации, которые помогут вам достичь оптимальной производительности при использовании оператора MERGE.