• One question I've always had on this topic is: Is there a chance of an execution plan being cached which works well for the insert but then creates problems when the update is run (or vice versa)?

    For example, the first time the query is run it evaluates to an insert and the plan is cached, the next time the query is run it evaluates to an update but SS tries to use the cached "insert" plan and performance suffers.