As pointed out in the other post?
Consider creating a view on sql server, and link to that.
Access often will "mess up" a join between two linked tables.
So, you probably built this query - dropped in the two tables - joined them.
However, access often "thinks" the two tables don't really have anything to do with each other, and with linked tables - it can often try to join local - not on the server. And this does run slow.
So, create the query main table + child table in sql server. Now from access link to that view.
It will join and perform really fast. And you can even filter or use where clauses against this linked table - performance will be top notch. And even now a client side query built in access will ONLY pull rows of data based on your criteria.
For a single linked table + query builder? (access client side). Performance is great - indexing is used server SQL side.
For "some" queries with two tables (both linked tables to sql server), sometimes access can and will mess this up. I have no hard and fast rule as to "when" this bad choice occurs.
However, if you build that query as view sql server side - do the join in that view?
Now link from Access to that view.
Then you get 100% high speed indexing for the join - and as noted - it will run very fast. And as noted, even if you now build query in Access against that view - add criteria etc? SQL server indexing will be used - and ONLY the records you ask for will be pulled by access (so indexing and even filtering against that linked view works very well).
Regards,
Albert D. Kallal (Access MVP 2003-2017)
Edmonton, Alberta Canada