• You conclude that you should do the UPDATE first. "The best strategy is to attempt the update."

    But with any SQL Server question, it depends :). In a heavy transaction load system, where you primarily are doing updates or an equal mix of updates and inserts, your conclusion is correct, but if you primarily are doing inserts, then you have a large overhead attempting an update for each insert, say you have a couple of hundred updates for each 100.000 inserts. In that case you should attempt the INSERT first, and then the UPDATE if it already exists, however without using IF EXISTS. You should use a TRY...CATCH block checking for a primary key violation.

    TRY

    INSERT....

    CATCH

    IF ERROR_NUMBER() =

    UPDATE....

    ELSE

    RAISERROR....