SQL Server - High Performance Record Comparison
Have you looked at using the Merge command, this was introduced in SQL Server 2008 and does an update or insert based on your matching criteria. 

I use this for merging XML quite a lot and it seems very efficient.

MERGE [Database] AS TargetTABLE
USING (SELECT @Var1 AS [Value1]
    @Var2 AS [Value2], 
    @Var3 AS [Value3]) AS SourceTABLE
ON TargetTABLE.[id] = SourceTABLE.[Value1]
WHEN MATCHED THEN
    UPDATE SET TargetTABLE.[Value2] = SourceTABLE.[Value2],
        TargetTABLE.[Value3] = SourceTABLE.[Value3]
WHEN NOT MATCHED THEN
    INSERT (
        [id], 
        [Value1],
        [Value2],
        [Value3])
    VALUES (
        SourceTABLE.[Value1], 
        SourceTABLE.[Value2],
        SourceTABLE.[Value3]
    );


Merge Command