To find out what slows down the load performance when nothing else helps I would use Windows System Monitor (Performance Monitor) during the load specifically looking at the Disk Time and Avg Disk Queue length. Because of the size of a single record in the target table, which is over 1.5 Kb, the load can produce significant amount of disk operation, while the disk remains the slowest component of the server. I would also check the size of tempdb database during the load, it might grow significantly doing the merge operation, which also produces disk I/O. If you find the Disk Queue length > 1 on average during the load, than it is the disk that is the bottleneck. The only thing you can do to reduce the disk spinning would be either remove 'uniqueness' requirement from your non-clustered index if it is tolerable by the business requirements.