The problem I am facing is that this SQL Merge command took too long to execute? It still takes more than 30 seconds. We are using MS-SQL 2012 Server.
So, can anyone tell me what I did wrong with the MERGE statement and why?
Thank...
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[spDealerAccount_VehicleSalesRecordReload]
@parmAccountId [bigint],
@parmBitwiseAcceptedTotal [bigint],
@parmYear [nvarchar](50),
@parmMake [nvarchar](50),
@parmModel [nvarchar](50),
@parmTrim [nvarchar](80),
@parmVin [nvarchar](17),
@parmSquishVin [nvarchar](12),
@parmVinValidationSkipped [bit],
@parmMileage [int],
@parmPurchaseDate [date],
@parmSaleDate [date],
@parmNumOfDays [int],
@parmSaleType [nvarchar](1),
@parmPurchaseAmount [money],
@parmRepairCostAmount [money],
@parmSaleAmount [money],
@parmTotalTradeAmount [money],
@parmGrossProfitAmount [money],
@parmZipcode [nvarchar](50),
@parmCity [nvarchar](50),
@parmState [nvarchar](50),
@parmRegion [nvarchar](50),
@parmStockNumber [nvarchar](50),
@parmLocation [nvarchar](150),
@parmDataSourceFrom [nvarchar](500),
@parmImportedVersion [int],
@parmCondition [nvarchar](50),
@parmAccessories [nvarchar](MAX),
@parmEngineDetail [nvarchar](50),
@parmExteriorColor [nvarchar](50)
AS
BEGIN
SET NOCOUNT ON;
MERGE
INTO [dbo].[tblDealerSalesVehicles] WITH (HOLDLOCK) AS t
USING [dbo].[tblDealerSalesVehicles] AS s
ON (t.[AccountId] = s.[AccountId] AND t.[Vin] = s.[Vin])
WHEN MATCHED THEN
UPDATE SET
t.[BitwiseAcceptedTotal] = @parmBitwiseAcceptedTotal,
t.[Year] = @parmYear,
t.[Make] = @parmMake,
t.[Model] = @parmModel,
t.[Trim] = @parmTrim,
t.[Mileage] = @parmMileage,
t.[StockDate] = @parmPurchaseDate,
t.[SoldDate] = @parmSaleDate,
t.[NumOfDays] = @parmNumOfDays,
t.[SaleType] = @parmSaleType,
t.[PurchPrice] = @parmPurchaseAmount,
t.[RepairCost] = @parmRepairCostAmount,
t.[SalePrice] = @parmSaleAmount,
t.[TotalTrade] = @parmTotalTradeAmount,
t.[GrossProfit] = @parmGrossProfitAmount,
t.[Zipcode] = @parmZipcode,
t.[City] = @parmCity,
t.[State] = @parmState,
t.[Region] = @parmRegion,
t.[StockNo] = @parmStockNumber,
t.[Location] = @parmLocation,
t.[DataSourceFrom] = @parmDataSourceFrom,
t.[ImportedVersion] = @parmImportedVersion,
t.[ModifiedDate] = GETDATE(),
t.[TimeStamp] = GETDATE()
WHEN NOT MATCHED THEN
INSERT (
[AccountID], [BitwiseAcceptedTotal],
[Year], [Make], [Model], [Trim], [VIN], [SquishVin], [VinValidationSkipped],
[Mileage], [StockDate], [SoldDate], [NumOfDays], [SaleType],
[PurchPrice], [RepairCost], [SalePrice],
[TotalTrade], [GrossProfit],
[Zipcode], [City], [State], [Region],
[StockNo], [Location],
[DataSourceFrom], [ImportedVersion], [ModifiedDate], [ImportedDate], [TimeStamp]
)
VALUES (
@parmAccountId, @parmBitwiseAcceptedTotal,
@parmYear, @parmMake, @parmModel, @parmTrim, @parmVin, @parmSquishVin, @parmVinValidationSkipped,
@parmMileage, @parmPurchaseDate, @parmSaleDate, @parmNumOfDays, @parmSaleType,
@parmPurchaseAmount, @parmRepairCostAmount, @parmSaleAmount,
@parmTotalTradeAmount, @parmGrossProfitAmount,
@parmZipcode, @parmCity, @parmState, @parmRegion,
@parmStockNumber, @parmLocation,
@parmDataSourceFrom, @parmImportedVersion, NULL, GETDATE(), GETDATE()
)
;
RETURN @@ERROR;
END