SQL INSERT, jedoch keine Duplikate
Ich möchte einige schnelle Einfügungen vornehmen, aber Doppeleinträge in eine Tabelle vermeiden. Um es als MarketPrices zu bezeichnen, habe ich zwei Methoden ausprobiert, bin mir aber nicht sicher, wie ich ein schnelleres Benchmarking durchführen soll.
INSERT INTO MarketPrices (SecurityCode, BuyPrice, SellPrice, IsMarketOpen)
SELECT @SecurityCode, @BuyPrice, @SellPrice, @IsMarketOpen
EXCEPT
SELECT SecurityCode, BuyPrice, SellPrice, j.bool as IsActive FROM MarketPrices
CROSS JOIN (SELECT 0 as bool UNION SELECT 1 as bool ) as j
ODER
DECLARE @MktId int
SET @MktId = (SELECT SecurityId FROM MarketPrices
where SecurityCode = @SecurityCode
and BuyPrice=@BuyPrice
and SellPrice = @SellPrice)
IF (@MktId is NULL)
BEGIN
INSERT INTO MarketPrices (SecurityCode, BuyPrice, SellPrice, IsMarketOpen)
VALUES
(@SecurityCode,@BuyPrice, @SellPrice, @IsMarketOpen)
END
Annehmen, dass@whatever
ist ein Eingabeparameter in der gespeicherten Prozedur.
Ich möchte in der Lage sein, für jeden SecurityCode einen neuen Datensatz einzufügen, wenn sich der BuyPrice oder der SellPrice oder beide von den vorherigen Ereignissen unterscheiden. IsMarketOpen interessiert mich nicht.
Gibt es etwas besonders Dummes an den oben genannten Ansätzen? Ist einer schneller als der andere?