• Well, you need to do some data transformation somewhere, let's say between the source and staging or staging and destination. To choose between these two you need to check your process, in my point of view the question is how you fill the staging table.

    If you fill the staging table with an SSIS job probably you want to do the ETL operations right in the job so your staging would be similar than the destination table. But if you are using a trigger or an action from the output clause of a query you may want to execute this as fast as you can, in this case I would load a staging table which is similar to the source.

    Anyway, if you are using the MERGE statement with a proper index on the merged tables that can be blazing fast. And you even don't need to know if the records were deleted, inserted or updated because those will merged.