(Keeping it simple)
Analyze calculates statistics that the Cost Based Optimizer (CBO) uses to chose how to run your query efficiently. The effect you see has nothing to do with the quality of your query. Analyze needs to be rerun when the statistics of your tables change siginificantly - maybe daily for a system starting up (big % changes in volumes), maybe monthly for a mature system. Of course it all depends . . . Try searching on those buzz-words.
"The power of instruction is seldom of much efficacy except in those happy dispositions where it is almost superfluous" - Gibbon, quoted by R.P.Feynman