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?

Antworten auf die Frage(6)

Ihre Antwort auf die Frage