Я слышал о создании промежуточных столов, и мне интересно, как вы на самом деле это делаете.
Я хочу сделать SqlBulkCopy в промежуточной таблице. Затем обновите реальную таблицу.
Я слышал в SQL Server 2008, что вы можете использовать нечто, называемое слиянием, но я использую SQL Server 2005, поэтому я слышал, что мне нужно использовать обновление внутреннего соединения?
Я не уверен, как это будет выглядеть (я предполагаю, что лучшим способом было бы написать это в SP). Также промежуточная таблица должна быть в состоянии обрабатывать параллельные обновления.
Я думал о том, чтобы поместить еще один столбец в стадию как GUID, чтобы я знал, какие записи принадлежат какой группе, и когда пришло время удалять записи из поэтапной таблицы, я могу просто использовать это.
Так может кто-нибудь показать мне какие-нибудь примеры или учебные пособия о том, как это сделать? И как быстро этот путь? Скажите, если ваше обновление 50000 записей, сколько времени это займет (догадка подойдет)
Редактировать
Так что теперь это мой SP. Я думаю, что это должно быть в состоянии делать параллельные соединения, но я хотел убедиться.
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[sp_MassUpdate]
@BatchNumber uniqueidentifier
AS
BEGIN
update Product
set ProductQty = 50
from Product prod
join StagingTbl stage on prod.ProductId = stage.ProductId
where stage.BatchNumber = @BatchNumber
DELETE FROM StagingTbl
WHERE BatchNumber = @BatchNumber
END