MySQL uses a cost-based optimizer to determine the best way to resolve a query. In many cases, MySQL can calculate the best possible query plan, but sometimes MySQL doesn't have enough information about the data at hand and has to make “educated” guesses about the data.
For the cases when MySQL does not do the "right" thing, tools that you have available to help MySQL are:
            Use the EXPLAIN statement to
            get information about how MySQL processes a query. To use
            it, just add the keyword
            EXPLAIN to the front of your
            SELECT statement:
          
mysql> EXPLAIN SELECT * FROM t1, t2 WHERE t1.i = t2.i;
            EXPLAIN is discussed in more
            detail in Section 12.3.2, “EXPLAIN Syntax”.
          
            Use ANALYZE TABLE
             to update the
            key distributions for the scanned table. See
            Section 12.5.2.1, “tbl_nameANALYZE TABLE Syntax”.
          
            
            Use FORCE INDEX for the scanned table to
            tell MySQL that table scans are very expensive compared to
            using the given index:
          
SELECT * FROM t1, t2 FORCE INDEX (index_for_column) WHERE t1.col_name=t2.col_name;
            USE INDEX and IGNORE
            INDEX may also be useful. See
            Section 12.2.8.2, “Index Hint Syntax”.
          
            Global and table-level STRAIGHT_JOIN. See
            Section 12.2.8, “SELECT Syntax”.
          
            You can tune global or thread-specific system variables. For
            example, Start mysqld with the
            --max-seeks-for-key=1000
            option or use SET max_seeks_for_key=1000
            to tell the optimizer to assume that no key scan causes more
            than 1,000 key seeks. See
            Section 5.1.4, “Server System Variables”.
          
MySQL Enterprise. For expert advice on configuring MySQL servers for optimal performance, subscribe to the MySQL Enterprise Monitor. For more information, see http://www.mysql.com/products/enterprise/advisors.html.


User Comments
Add your own comment.