We have the same problem with Remote Views. You must resort to a combination of pass-thrus and local cursors. Pass-thrus are very fast. I have a table with 150,000 rows and the best optimzed way I can see is as follows:
OPEN DATABASE mydatabase
h=SQLConnect('datasource')
n=SQLExec(h,'select * from largetable where id=somefilter,'mylargecursor')
n=SQLExec(h,'select * from othertable where id=somefilter,'myothertablecursor')
* Do things to cursors now or use them like DBFS
SELECT * from mylargecursor a,myothertablecurosr b where a.id=b.id
Tip: See if creating the cursor on the same server as the SQL Database gives you a speed improvement. You can do that by setting the temp directory in the Table/Options menu.
Costas