Commit 1cdde351 authored by unknown's avatar unknown

Clarified USE/IGNORE INDEX in all relevant sections.

Added mention of USE/IGNORE KEY as alias for USE/IGNORE INDEX.
Fixups references to this feature throughout manual.

parent c627eb76
...@@ -24779,14 +24779,12 @@ and check the query with @code{EXPLAIN} again. @xref{ALTER TABLE}. ...@@ -24779,14 +24779,12 @@ and check the query with @code{EXPLAIN} again. @xref{ALTER TABLE}.
To see what indexes a table has, use @code{SHOW INDEX FROM tbl_name}. To see what indexes a table has, use @code{SHOW INDEX FROM tbl_name}.
@item key @item key
@findex USE INDEX The @code{key} column indicates the key (index) that MySQL actually
@findex IGNORE INDEX
The @code{key} column indicates the key that MySQL actually
decided to use. The key is @code{NULL} if no index was chosen. If decided to use. The key is @code{NULL} if no index was chosen. If
MySQL chooses the wrong index, you can probably force MySQL chooses the wrong index, you can probably force
MySQL to use another index by using @code{myisamchk --analyze}, MySQL to use another index by using @code{myisamchk --analyze},
@xref{myisamchk syntax}, or by using @code{USE INDEX/IGNORE INDEX}. @xref{myisamchk syntax}, or by using @code{USE INDEX/IGNORE INDEX}.
@xref{JOIN}. @xref{SELECT}.
@item key_len @item key_len
The @code{key_len} column indicates the length of the key that The @code{key_len} column indicates the length of the key that
...@@ -32809,16 +32807,27 @@ because the column value may not yet be determined when the ...@@ -32809,16 +32807,27 @@ because the column value may not yet be determined when the
@xref{Problems with alias}. @xref{Problems with alias}.
@item @item
@findex AS
@findex USE INDEX
@findex IGNORE INDEX
@findex USE KEY
@findex IGNORE KEY
The @code{FROM table_references} clause indicates the tables from which to The @code{FROM table_references} clause indicates the tables from which to
retrieve rows. If you name more than one table, you are performing a retrieve rows. If you name more than one table, you are performing a
join. For information on join syntax, see @ref{JOIN, , @code{JOIN}}. join. For information on join syntax, see @ref{JOIN, , @code{JOIN}}.
For each table specified, you may optionally specify an alias, as well as For each table specified, you may optionally specify an alias.
make a suggestion to the optimiser what index to use or ignore.
@findex USE INDEX
@findex IGNORE INDEX
@example @example
table_name [[AS] alias] [USE INDEX (key_list)] [IGNORE INDEX (key_list)] table_name [[AS] alias] [USE INDEX (key_list)] [IGNORE INDEX (key_list)]
@end example @end example
As of MySQL Version 3.23.12, you can give hints about which
index MySQL should use when retrieving information from a
table. This is useful if @code{EXPLAIN} shows that MySQL is
using the wrong index. By specifying @code{USE INDEX (key_list)}, you
can tell MySQL to use only one of the specified indexes to
find rows in the table. The alternative syntax @code{IGNORE INDEX
(key_list)} can be used to tell MySQL to not use some
particular index.
@code{USE/IGNORE KEY} are synonyms for @code{USE/IGNORE INDEX}.
@item @item
You can refer to a column as @code{col_name}, @code{tbl_name.col_name}, or You can refer to a column as @code{col_name}, @code{tbl_name.col_name}, or
...@@ -33108,8 +33117,7 @@ table_reference NATURAL [RIGHT [OUTER]] JOIN table_reference ...@@ -33108,8 +33117,7 @@ table_reference NATURAL [RIGHT [OUTER]] JOIN table_reference
@end example @end example
Where @code{table_reference} is defined as: Where @code{table_reference} is defined as:
@findex USE INDEX @findex AS
@findex IGNORE INDEX
@example @example
table_name [[AS] alias] [USE INDEX (key_list)] [IGNORE INDEX (key_list)] table_name [[AS] alias] [USE INDEX (key_list)] [IGNORE INDEX (key_list)]
@end example @end example
...@@ -33215,6 +33223,9 @@ can tell MySQL to use only one of the specified indexes to ...@@ -33215,6 +33223,9 @@ can tell MySQL to use only one of the specified indexes to
find rows in the table. The alternative syntax @code{IGNORE INDEX find rows in the table. The alternative syntax @code{IGNORE INDEX
(key_list)} can be used to tell MySQL to not use some (key_list)} can be used to tell MySQL to not use some
particular index. particular index.
@findex USE KEY
@findex IGNORE KEY
@code{USE/IGNORE KEY} are synonyms for @code{USE/IGNORE INDEX}.
@end itemize @end itemize
Some examples: Some examples:
...@@ -48492,7 +48503,7 @@ with one table and @code{ORDER BY} and with InnoDB tables. ...@@ -48492,7 +48503,7 @@ with one table and @code{ORDER BY} and with InnoDB tables.
@item @item
Fixed that @code{SELECT 0 LIMIT 0} doesn't hang thread. Fixed that @code{SELECT 0 LIMIT 0} doesn't hang thread.
@item @item
Fixed some problems with @code{USE KEYS} / @code{IGNORE KEYS} when using Fixed some problems with @code{USE/IGNORE INDEX} when using
many keys with the same start column. many keys with the same start column.
@item @item
Don't use table scan with BerkeleyDB and InnoDB tables when we can use Don't use table scan with BerkeleyDB and InnoDB tables when we can use
...@@ -50861,7 +50872,7 @@ Fixed bug in @code{net_clear()} which could give the error @code{Aborted ...@@ -50861,7 +50872,7 @@ Fixed bug in @code{net_clear()} which could give the error @code{Aborted
connection} in the MySQL clients. connection} in the MySQL clients.
@item @item
Added options @code{USE INDEX (key_list)} and @code{IGNORE INDEX (key_list)} as Added options @code{USE INDEX (key_list)} and @code{IGNORE INDEX (key_list)} as
join parameters in @code{SELECT}. parameters in @code{SELECT}.
@item @item
@code{DELETE} and @code{RENAME} should now work on @code{RAID} tables. @code{DELETE} and @code{RENAME} should now work on @code{RAID} tables.
@end itemize @end itemize
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment