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.
2. The method of claim 1 , wherein the one or more annotations for a selected choice comprises: one or more semantically different alternatives to the selected choice; reasons for not performing one or more rewrites of the database query language statement; and information to be displayed to a developer of the database query language statement.