Performance in replicating table between servers
if you want the records that have been changed you could use the OUTPUT Clause (Transact-SQL)

you can also see an example of this here 

Regarding your update statement, you definitely need an index on the ID column in both tables. I would even consider creating it as clustered, but I don't know your tables structure and your application.

you could for example, use the output clause to save the changed records into an specific table(s) and replicate that/those table(s).