Hi Everyone,
Thanks so much for all your responses. It’s been a while, but that’s because I’ve been doing a lot of testing as and when I get the chance. I reckon I’ve cracked my problem now, and I thought I’d share the results of my experience in case it might help someone.
Firstly, can I say that I understand and agree with you all! I was myself a little confused about what it was that was actually causing my specific issue, but I think I can explain now. As background, I probably need to say that this is not a massive database in terms of data (although some tables might have 70k + records but there are not so many of them). But it IS quite a complex application in terms of the forms. There are some pretty complex 3rd party controls (such as editable Gantt charts) that take data from lots of tables and crunches it a lot before displaying it in a fancy interface. I use a particularly heavy one of these charts as my measure of “how fast is the connection”. I go by what it “feels” like to decide whether or not it is loading in an acceptable amount of time for the user experience. For this heavy chart, when it loads a big project, it “feels” to me like it is OK when it brings it all up within 3-5 seconds. When it gets to be about 7-8 seconds it feels like internet banking in the 90s, and I don’t think it’s acceptable to the user.
So to clarify my original problem (now that I’ve done all the testing and feel I understand it a bit better), I was experiencing horrible slowness on this “canary” chart after I migrated the application to a new Windows Server. It seemed to me like it was setup the same as on the old server, but I couldn’t properly know because I am not the network guy, we use an external company to handle all that. I’m just the “data and systems” guy internal in the company. My problem seemed to be that installing the server on the C: drive of the server was fine, but on any other drive created this “slowness”.
Actually, I can now report what works for us on our network. So it seems to me that it has nothing to do with where the front end client is, and it all depends on the internal table-linking path within the .accdb (i.e. the path you see when you use the “linked table manager”) of the front end. And it is actually different (believe it or not) whether we are accessing by RDP or across the network internally in the office. So specifically:
For accessing by RDP:
- if the path is to a drive that is a “local disk”, then it is fast and snappy
- if the path is to a drive that is a “network share”, then slowness.
This suggests you should make sure the back end is on the C: drive of the server (or proper partition that is a "local disk"), and the front end can go anywhere you like so long as this internal table-linking is to the local drive AND NOT a network share of the local drive.
For accessing across the network in the office (no VPN or RDP)
- the path cannot (by definition) be to a drive that is a “local disk”
- if the path is to a drive that is a “network share”, then it is fast and snappy!
This suggests you can have the front end with the linking path to a drive that is a “network share”, seemingly contradicting the findings for RDP.
MY SOLUTION:
We need both RDP access (for remote users) and local network access (because it is always better). I didn’t want to write 2 different front ends (not because I am lazy but I am trying to avoid a maintenance pain), so I got the external IT guys to give me a full partition (called L:\) on the new server that was just for this application. Then I got them to map the L:\ partition as a network share, (crucially also as “L:\”) on all the local computers. They resisted this at first because apparently it is not “Microsoft best practice” (which is apparently to create a folder on the partition on the server and map that out, for security). But when I explained everything they relented on the basis that this would be the only thing on the partition.
Now I know it’s weird and idiosyncratic, but this is what works on my system. Everything is fast and snappy setup this way. I write this on the chance that somebody else might come across similar issues to me and it might help them. Thanks again for all your suggestions!