You will find, if you can look at network traffic, that the entire access table gets copied across the network and processing is done locally. Try to make sure that data is only read when you want it to be. It is very common in Access to have a form recordsource as a table name as it makes it easy to add fields, and then to just show a subset. For instance, the form recordsource may be Orders, and you then, as soon as the form is loaded have code that restricts it like recordsource = "SELECT this, that FROM Orders WHERE InputDate = " & format (now ,"dd mmm yyyy " ). This is a real slower and will read the table twice. Remove form recordsources wherever you can. On my real slow one, I ended up with buttons on the subforms to fill the recordsource for the subform as the users never wnated to see them all at the same time. Waiting a few seconds for a subform to load was ok. Joins were a real killer, as in read two huge tables, do the join locally and display 10 records. I added a lot of redundancy to the tables to get rid of the joins. That helped a lot.
Take a form at a time, do different things with it and see the effect on network traffic.