Ok, I think I may have it fixed. (fingers crossed)
I ran some tools on all the DB tables, repair and optimize.
But I think the real culprit was this....
Many years ago we had some performance issues so we added some code to record page urls/load times/time of day etc. So each page load added a row to the DB table so we could analyze things. We figured out the issue and fixed it, but never disabled the code. So this table now had almost 100 million
rows in it! I removed the code from the site and deleted the table. The DB almost instantly went from about 100 million rows to about 900 thousand.
I noticed an immediate increase in pageload times and haven't had a slow one yet, but it's only been around an hour so far.