Optimization is a fickle, fickle thing.
As an example, I worked on an application where the database would be backed up from production and used as the source data for QA and Dev. This database was analyzed according to a schedule -- something that worked for production. But this optimization didn't help for Dev and QA, which not only had different usage patterns, but wasn't updated nearly as frequently.
As a result, the speed of queries in Dev and QA went down, and we started to look at the possibility we had written code that changed something. As we found out, no code had changed, just our assumptions.
Optimization is about assumptions. No one can give you a one-size-fits-all rule. It all depends on your environment.
That's why those questions can't be answered objectively.