常用的索引分为下面几种:key:普通索引unique key:唯一索引primary key:主键索引full text:全文索引实例操作:创建表t8添加索引:mysql> create table t8 ( id int, name char(10), email char(20),key name(name),unique key(email) );Query OK, 0 rows affected (0.01 sec)mysql> desc t8;+-------+----------+------+-----+---------+-------+| Field | Type     | Null | Key | Default | Extra |+-------+----------+------+-----+---------+-------+| id    | int(11)  | YES  |     | NULL    |       || name  | char(10) | YES  | MUL | NULL    |       || email | char(20) | YES  | UNI | NULL    |       |+-------+----------+------+-----+---------+-------+3 rows in set (0.00 sec)插入数据:mysql> insert into t8 values ("1","lisi","lisi@email.com")    -> ;Query OK, 1 row affected (0.01 sec)查询数据:mysql> select * from t8;+------+------+----------------+| id   | name | email          |+------+------+----------------+|    1 | lisi | lisi@email.com |+------+------+----------------+1 row in set (0.00 sec)#unique key唯一性,lisi@email.com邮箱已经存在将不允许相同.mysql> insert into t8 values ("2","lisi","lisi@email.com")    -> ;ERROR 1062 (23000): Duplicate entry 'lisi@email.com' for key 'email'#创建表t9,主键key。mysql> create table t9 ( id int, name char(10), email char(20),primary key (id),key id (name),unique key(email) );Query OK, 0 rows affected (0.04 sec)mysql> desc t9;+-------+----------+------+-----+---------+-------+| Field | Type     | Null | Key | Default | Extra |+-------+----------+------+-----+---------+-------+| id    | int(11)  | NO   | PRI | 0       |       || name  | char(10) | YES  | MUL | NULL    |       || email | char(20) | YES  | UNI | NULL    |       |+-------+----------+------+-----+---------+-------+3 rows in set (0.00 sec)##索引的长度:建索引时,可以只索引列的前一部分的内容,比如前10个字符.如 key id(email(10))#索引email长度为10个字符,并不是只允许表中email列插入长度为10个字符,而是说索引引用时只引用emial列前面10个字符.mysql> create table t10 ( id int, name char(10), email char(20),primary key (id),key id (email(10)),unique key(email) );Query OK, 0 rows affected (0.02 sec)mysql> desc t10;+-------+----------+------+-----+---------+-------+| Field | Type     | Null | Key | Default | Extra |+-------+----------+------+-----+---------+-------+| id    | int(11)  | NO   | PRI | 0       |       || name  | char(10) | YES  |     | NULL    |       || email | char(20) | YES  | UNI | NULL    |       |+-------+----------+------+-----+---------+-------+3 rows in set (0.00 sec)#插入超过10个字符长度的email,发现也是可以的.mysql> insert into t10 values (1,"lisi","sqweqeqeq@email.com");Query OK, 1 row affected (0.01 sec)多列索引:把2个或者多列的值,看成一个整体,然后建立索引.mysql> create table t11 (    -> xing char(2),    -> ming char(10),    -> key xm(xing,ming)    -> );Query OK, 0 rows affected (0.02 sec)mysql> desc t11;+-------+----------+------+-----+---------+-------+| Field | Type     | Null | Key | Default | Extra |+-------+----------+------+-----+---------+-------+| xing  | char(2)  | YES  | MUL | NULL    |       || ming  | char(10) | YES  |     | NULL    |       |+-------+----------+------+-----+---------+-------+2 rows in set (0.00 sec)mysql> insert into  t11 values ("李","世民");Query OK, 1 row affected (0.00 sec)mysql> select * from t11;+------+--------+| xing | ming   |+------+--------+| 李   | 世民   |+------+--------+1 row in set (0.00 sec)mysql> show index from t11 \G;*************************** 1. row ***************************        Table: t11   Non_unique: 1     Key_name: xm Seq_in_index: 1  Column_name: xing    Collation: A  Cardinality: 1     Sub_part: NULL       Packed: NULL         Null: YES   Index_type: BTREE      Comment: Index_comment: *************************** 2. row ***************************        Table: t11   Non_unique: 1     Key_name: xm Seq_in_index: 2  Column_name: ming    Collation: A  Cardinality: 1     Sub_part: NULL       Packed: NULL         Null: YES   Index_type: BTREE      Comment: Index_comment: 2 rows in set (0.00 sec)ERROR: No query specified#多列索引的查询。mysql> select * from t11 where xing="李" and ming="世民";+------+--------+| xing | ming   |+------+--------+| 李   | 世民   |+------+--------+1 row in set (0.01 sec)查看查询所能使用的索引:explainmysql> explain select * from t11 where xing="李" and ming="世民";+----+-------------+-------+------+---------------+------+---------+-------------+------+--------------------------+| id | select_type | table | type | possible_keys | key  | key_len | ref         | rows | Extra                    |+----+-------------+-------+------+---------------+------+---------+-------------+------+--------------------------+|  1 | SIMPLE      | t11   | ref  | xm            | xm   | 38      | const,const |    1 | Using where; Using index |+----+-------------+-------+------+---------------+------+---------+-------------+------+--------------------------+1 row in set (0.00 sec)mysql> explain select * from t11 where xing="李";+----+-------------+-------+------+---------------+------+---------+-------+------+--------------------------+| id | select_type | table | type | possible_keys | key  | key_len | ref   | rows | Extra                    |+----+-------------+-------+------+---------------+------+---------+-------+------+--------------------------+|  1 | SIMPLE      | t11   | ref  | xm            | xm   | 7       | const |    1 | Using where; Using index |+----+-------------+-------+------+---------------+------+---------+-------+------+--------------------------+1 row in set (0.00 sec)mysql> explain select * from t11 where  ming="世民";+----+-------------+-------+-------+---------------+------+---------+------+------+--------------------------+| id | select_type | table | type  | possible_keys | key  | key_len | ref  | rows | Extra                    |+----+-------------+-------+-------+---------------+------+---------+------+------+--------------------------+|  1 | SIMPLE      | t11   | index | NULL          | xm   | 38      | NULL |    1 | Using where; Using index |+----+-------------+-------+-------+---------------+------+---------+------+------+--------------------------+1 row in set (0.00 sec)mysql> explain select * from t11 where  ming="世民" and xing="李";+----+-------------+-------+------+---------------+------+---------+-------------+------+--------------------------+| id | select_type | table | type | possible_keys | key  | key_len | ref         | rows | Extra                    |+----+-------------+-------+------+---------------+------+---------+-------------+------+--------------------------+|  1 | SIMPLE      | t11   | ref  | xm            | xm   | 38      | const,const |    1 | Using where; Using index |+----+-------------+-------+------+---------------+------+---------+-------------+------+--------------------------+1 row in set (0.00 sec)冗余索引:在某个列上,可能存在多个索引.比如xm(xing,ming) m(ming).目的在于加快查询速度.mysql> create table t12 ( xing char(2), ming char(10), key xm(xing,ming),key m(ming) );Query OK, 0 rows affected (0.02 sec)mysql> show index from t12;+-------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+| Table | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment | Index_comment |+-------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+| t12   |          1 | xm       |            1 | xing        | A         |           0 |     NULL | NULL   | YES  | BTREE      |         |               || t12   |          1 | xm       |            2 | ming        | A         |           0 |     NULL | NULL   | YES  | BTREE      |         |               || t12   |          1 | m        |            1 | ming        | A         |           0 |     NULL | NULL   | YES  | BTREE      |         |               |+-------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+3 rows in set (0.00 sec)mysql> show index from t12 \G;*************************** 1. row ***************************        Table: t12   Non_unique: 1     Key_name: xm Seq_in_index: 1  Column_name: xing    Collation: A  Cardinality: 0     Sub_part: NULL       Packed: NULL         Null: YES   Index_type: BTREE      Comment: Index_comment: *************************** 2. row ***************************        Table: t12   Non_unique: 1     Key_name: xm Seq_in_index: 2  Column_name: ming    Collation: A  Cardinality: 0     Sub_part: NULL       Packed: NULL         Null: YES   Index_type: BTREE      Comment: Index_comment: *************************** 3. row ***************************        Table: t12   Non_unique: 1     Key_name: m Seq_in_index: 1  Column_name: ming    Collation: A  Cardinality: 0     Sub_part: NULL       Packed: NULL         Null: YES   Index_type: BTREE      Comment: Index_comment: 3 rows in set (0.00 sec)ERROR: No query specified#删除索引.语法:alter table 表名 drop index 索引名drop index 索引名 on 表名#删除索引mmysql> alter table t12 drop index m;Query OK, 0 rows affected (0.02 sec)Records: 0  Duplicates: 0  Warnings: 0mysql> drop index xm on t12;Query OK, 0 rows affected (0.01 sec)Records: 0  Duplicates: 0  Warnings: 0mysql> show index from t12 \G;Empty set (0.00 sec)ERROR: No query specified添加索引alter table 表名 add [index/unique] 索引名;mysql> alter table t12 add index xm(xing,ming);Query OK, 0 rows affected (0.02 sec)Records: 0  Duplicates: 0  Warnings: 0mysql> alter table t12 add unique m(ming);Query OK, 0 rows affected (0.01 sec)Records: 0  Duplicates: 0  Warnings: 0mysql> show create table t12;+-------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+| Table | Create Table                                                                                                                                                                   |+-------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+| t12   | CREATE TABLE `t12` (  `xing` char(2) DEFAULT NULL,  `ming` char(10) DEFAULT NULL,  UNIQUE KEY `m` (`ming`),  KEY `xm` (`xing`,`ming`)) ENGINE=InnoDB DEFAULT CHARSET=utf8 |+-------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+1 row in set (0.00 sec)添加主键索引mysql> alter table t12 add primary key(xing);Query OK, 0 rows affected (0.02 sec)Records: 0  Duplicates: 0  Warnings: 0删除主键索引mysql> alter table t12 drop primary key;Query OK, 0 rows affected (0.02 sec)Records: 0  Duplicates: 0  Warnings: 0