When optimizing, don't do it blindly. Do some actual tests or profiling to find the true bottleneck. It might be a specific query, the DB as a whole, etc. But unless you fix the biggest bottleneck, other improvements won't make much diference. Once you fix the biggest bottleneck, go back and do it again for the next biggest.
This way, you will know for sure if you need another machine, more RAM, or just another table index.