B-Tree Index Characteristics
A B-tree index can be used for column comparisons in expressions that use the=
,
>
,
>=
,
<
,
<=
,
or BETWEEN
operators. The index
also can be used for LIKE
comparisons if the argument to LIKE
is a constant string that does not start with a wildcard
character. For example, the following
SELECT
statements use indexes:
SELECT * FROMIn the first statement, only rows withtbl_name
WHEREkey_col
LIKE 'Patrick%'; SELECT * FROMtbl_name
WHEREkey_col
LIKE 'Pat%_ck%';
'Patrick' <=
key_col
< 'Patricl'
are
considered. In the second statement, only rows with
'Pat' <= key_col
<
'Pau'
are considered.
The following
SELECT
statements
do not use indexes:
SELECT * FROMtbl_name
WHEREkey_col
LIKE '%Patrick%'; SELECT * FROMtbl_name
WHEREkey_col
LIKEother_col
;
Hash Index Characteristics
Hash indexes have somewhat different characteristics from those just discussed:-
They are used only for equality comparisons that use the
=
or<=>
operators (but are very fast). They are not used for comparison operators such as<
that find a range of values. Systems that rely on this type of single-value lookup are known as “key-value stores”; to use MySQL for such applications, use hash indexes wherever possible. -
The optimizer cannot use a hash index to speed up
ORDER BY
operations. (This type of index cannot be used to search for the next entry in order.) -
MySQL cannot determine approximately how many rows there are
between two values (this is used by the range optimizer to
decide which index to use). This may affect some queries if
you change a
MyISAM
orInnoDB
table to a hash-indexedMEMORY
table. -
Only whole keys can be used to search for a row. (With a
B-tree index, any leftmost prefix of the key can be used to
find rows.)
No comments:
Post a Comment