300,000 objects in a database is trivial. MySQL certainly isn’t the problem. Either the data architecture is bad, the host is bad, or you have some super large objects...
Oh, well, the 300,000 are the base items. Atop that are 700,000 orders, 300,000 customer records, 800,000 current sales records, and 4 million archived sales records. Call it 6 million for simplicity.