An introductory article on join ordering in database query optimization, focusing on dynamic programming approaches from the Munich school of research. The author outlines a planned 6-part series examining four foundational papers that progressively address optimal join tree generation, from basic dynamic programming algorithms to handling complex predicates and scaling to thousands of relations.