Which is better: Selecting across linked servers vs migrating the database I have a customer that needs to query a linked server to produce a report. They will be joining a linked server table with a local table. 

Is it better to just let them do the select across the linked server OR migrate (backup/restore) the database every day and have there query run against 2 local databases?

For discussion sake let's say the query returns 20K records.
You'll likely get the best performance by copying the content of the remote table locally first, then running the query.  Especially if you filter the remote table through a remote view or a stored proc on the remote server.  

Joining across a linked server can be brutal on performance depending on the implementation details of the query.