Joining a remote table is not a good move.
it has to be fully loaded to the local server, and then every row of it should be compared to every row in local table. Locking it for the whole duration of that, potentially lengthy, process.
since the table is copied anyway, you may create a temp table with necessary fields, populate it with openquery and then use it in the join.
or you may have a replicated copy of the remote table, but you must make sure that the replication schedule matches the schedule of your report.