You should understand what kind of data (and amount) you have in both servers (local and remote) when you're using linked server.
Sometimes you'd like to run the join on the remote server and "get" the result only (if local table is small and the join will eliminate records for example).
For this case use the REMOTE join hint.
Specifies that the join operation is performed on the site of the right table. This is useful when the left table is a local table and the right table is a remote table. REMOTE should be used only when the left table has fewer rows than the right table.
If the right table is local, the join is performed locally. If both tables are remote but from different data sources, REMOTE causes the join to be performed on the site of the right table. If both tables are remote tables from the same data source, REMOTE is not required.
REMOTE cannot be used when one of the values being compared in the join predicate is cast to a different collation using the COLLATE clause.
REMOTE can be used only for INNER JOIN operations."