The SQL Rewrite function analyzes the input SQL statement and uses an Artificial Intelligence Engine to produce a group of semantically equivalent versions of the statement, known as SQL alternatives. You can then test run these alternatives in the SQL Optimizer window to determine the best-performing version of the SQL.
Tip: After you run SQL Rewrite, run the Generate Indexes function to add alternatives that incorporate virtual indexes. You can then test run the SQL alternatives along with index-set alternatives to measure performance. See Generate Index-Set Alternatives for more information.
The SQL Rewrite process includes these phases:
Retrieves the access plan and the DB2 optimized text that the DB2 LUW optimizer has chosen for the specific SQL alternative. SQL Rewrite classifies the SQL statement according to characteristics that cause performance problems.
Rewrites the original SQL statement to produce a list of semantically equivalent versions, or SQL alternatives.
Allows the users to test run the original and the SQL alternatives to select which SQL version gives the best performance. For each alternative, Batch Run provides the run time for retrieving all records and for retrieving only the first record. You can use this information to identify which alternative is most suitable for your application.
Executes alternatives against the original SQL and displays the returned data for comparison in the SQL Optimizer window.
The SQL Optimizer provides two different measurements of performance; the run time for retrieving all records and the run time for retrieving the first n records. Both measurements give you an indication on the fastest running SQL statement—but with two different aims. You must understand the use of the SQL statement in the application. Generally, if the SQL statement is used for reports, then you should use the Run for All Record or Batch Run with Run Time Mode set to All Records. If the SQL statement is used for online query, then use the Run for First Record or Batch Run with Run Time Mode set to First n Record.
Note: If the aim of the SQL statement is unknown, then use All Records as a performance indication.
After optimization and execution testing, you may discover that the performance of the optimized SQL statements is still not satisfactory. To remedy this, first check that the searching quota has not been reached in the Optimization Details window. If it has, then you should increase the intelligence level or optimization options in the Options window and optimize again to ensure all transformed SQL statements are given. Rerun the SQL statement optimization after the review.
You can also review the access plan of the optimized SQL statement to check if there should be any alterations to the database structure such as adding a new index. The Index Expert module is used to generate alternative Index Sets for a SQL statement.
Run Result (SQL alternatives only)