The SQL optimizers - understanding the rule-based optimizer, understanding the cost-based optimizer, some common optimizer misconceptions, which optimizer to use?; rule-based optimizer problems and solutions - problem 1 - incorrect driving table, problem 2 - incorrect index, problem 3 - incorrect driving index, problem 4 - using the ORDER BY index and not the WHERE index; cost-based optimizer problems and solutions - problem 1 - the skewness problem, problem 2 - analyzing with wrong data, problem 3 - mixing the optimizers in joins, problem 4 - choosing an inferior index, problem 5 - joining too many tables, problem 6 - incorrect INIT.ORA parameter settings; problems common to rule and cost with solutions - problem 1 - statement not written for indexes, problem 2 - indexes are missing or inappropriate, problem 3 - use of single-column index merge, problem 4 - misuse of nested loop, sort merge, or hash join, problem 5 - misuse of IN, EXISTS, NOT IN, NOT EXISTS, or table joins, problem 6 - unnecessary sorts, problem 7 - too many indexes on a table, problem 8 - use of OR instead of UNION, problem 9 - tables and indexes with many deletes, other problems - heavy usage of views, other problems - joining too many tables; handy SQL tuning tips - identify bad SQL, identify long-running SQL statements, use DECODE for IF/ELSE selection, encourage bind variables; using SQL hints - when are hints ignored?, using hints in views, available hints; using DBMS_STATS to manage statistics - using DBMS_STATS to analyze faster copying statistics, using dBMS_STATS Manipulating statistics using DBMS_STATS, reverting to previous statistics; using outlines for consistent execution plans - recording outlines, enabling outlines, managing outlines.