1. A method comprising: receiving a database query language statement at an optimizer; evaluating one or more choices in a search space to identify or generate an optimal execution plan for the database query language statement; generating an annotated execution plan from the optimal execution plan by producing and storing one or more annotations in the annotated execution plan to explain one or more reasons for the optimizer selecting a choice over an alternative choice during the act of evaluating the one or more choices, wherein the annotated execution plan is examined for identifying or generating a recommendation for one or more schema changes and the possible statement modification to rewrite the database query language statement; and displaying the recommendation on a display apparatus or storing the result in a tangible computer usable medium or a storage device.