If I may insert a thought, I think what makes it run as quick as it can is that Access automatically indexes the fields used in a relationship. I am not sure without checking whether it's both the 1-side and the many-side, or just the many side, but it means a query can read the linked data as efficiently as possible. These indexes are hidden - there is a "hidden" flag in the index properties - which prevents users messing around with them, but they are still available if required, and can be inspected programmatically.