и то и другое. При работе с большим числом необходимо удалять пакетами из-за проблем с ростом журнала транзакций. Предполагая, что вы хотите удалить все записи для данного @productId:
declare @batchSize int = 10000;
do while(1=1)
begin
delete top(@batchSize) from ProductInfo where productId = @productId;
if (0 = @@rowcount)
break;
end
Две опубликованные вами формы DELETE в основном идентичны, важно то, что таблица организована по кластерному ключу на основе ключа productId
. Если это не так, и у вас индекс NC на productId
, тогда @batchSize необходимо откалибровать, чтобы избежать точки опрокидывания индекса .