[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
All MySQL column types can be indexed. Use of indexes on the
relevant columns is the best way to improve the performance of SELECT
operations.
The maximum number of indexes per table and the maximum index length is defined per storage engine. See section 14. MySQL Table Types. All storage engines support a minimum of 16 indexes per table and a minimum total index length of 256 bytes.
For CHAR
and VARCHAR
columns, you can index a prefix of a
column. This is much faster and requires less disk space than indexing the
whole column. The syntax to use in the CREATE TABLE
statement to
index a column prefix looks like this:
INDEX index_name (col_name(length)) |
The example here creates an index for the first 10 characters of the
name
column:
mysql> CREATE TABLE test ( -> name CHAR(200) NOT NULL, -> INDEX index_name (name(10))); |
For BLOB
and TEXT
columns, you must index a prefix of the
column. The prefix may be up to 255 bytes long.
In MySQL Version 3.23.23 or later, you can also create special
FULLTEXT
indexes. They are used for full-text search. Only the
MyISAM
table type supports FULLTEXT
indexes and only for
CHAR
, VARCHAR
, and TEXT
columns.
Indexing always happens over the entire column and partial (prefix) indexing
is not supported. See 13.7 MySQL Full-text Search for details.