Enligt Microsoft ska man först köra en update, blir noll rader uppdaterade kör man en insert. Jag vågar dock inte lova att det är snabbast i alla lägen att göra så.
Som rubriken lyder, vad bör vara mer fördelmässigt ur prestanda synvinkel, detta gäller för Ms SQL Server 2008.
Vi börjar med variant 1:
INSERT INTO TABELL1(Col1,Col2,Time) VALUES('Value1','Value2', GETDATE())
DELETE FROM TABELL1 WHERE Col1 = 'Value1' AND Time < GETDATE()
eller:
IF (SELECT COUNT(Col1) FROM TABELL1 WHERE Col1 = 'Value1') = 0
BEGIN
INSERT INTO TABELL1(Col1,Col2,Time) VALUES('Value1','Value2',
GETDATE())
END
ELSE
BEGIN
UPDATE TABELL1 Set Col2='Value2', Time=GETDATE() WHERE Col1 = 'Value1'
END
Dvs om raden finns uppdatera värden i raden annars lägg in en rad.

