An examination is made of existing rule-based optimizers, showing that they have significant limitations. A new approach to optimization based on the idea of modules is presented. An optimizer is divided into several interconnected modules. Each module has its own set of rewrite rules and can be implemented differently according to how the rules are used. This modular approach avoids the limitations of existing systems and supports flexible optimizer prototyping, efficient optimize-time search, and convenient access to metadata. To illustrate these ideas, a decomposition into modules is given for an example relational query optimizer.< >
Vladimir ZadorozhnyLaura F. BrightLouiqa RaschidTolga UrhanMaría-Esther Vidal