:: DEVELOPER ZONE
In general, when you want to make a slow SELECT ... WHERE query
faster, the first thing to check is whether you can add an index.
All references between different tables should usually be done with
indexes. You can use the EXPLAIN statement to determine which
indexes are used for a SELECT.
See Section 7.4.5, “How MySQL Uses Indexes” and
Section 7.2.1, “EXPLAIN Syntax (Get Information About a SELECT)”.
Some general tips for speeding up queries on MyISAM tables:
To help MySQL optimize queries better, use ANALYZE TABLE or
run myisamchk --analyze on a table after it has been loaded with
data. This updates a value for each index part that indicates the average
number of rows that have the same value. (For unique indexes, this is
always 1.) MySQL uses this to decide which index to choose when you
join two tables based on a non-constant expression. You can check the
result from the table analysis by using SHOW INDEX FROM
and examining the tbl_nameCardinality value. myisamchk --description --verbose shows index distribution information.
To sort an index and data according to an index, use myisamchk --sort-index --sort-records=1 (if you want to sort on index 1). This is a good way to make queries faster if you have a unique index from which you want to read all records in order according to the index. Note that the first time you sort a large table this way, it may take a long time.
© 1995-2005 MySQL AB. All rights reserved.

User Comments
Add your own comment.