MySQL提供多种索引类型供选择:

普通索引

创建所用的SQL:

CREATE INDEX ON tablename (列的列表);

ALTER TABLE tablename ADD INDEX [索引的名字] (列的列表);

CREATE TABLE tablename ( [...], INDEX [索引的名字] (列的列表) );

唯一索引(Unique索引)

创建所用的SQL:

CREATE UNIQUE INDEX ON tablename (列的列表);

ALTER TABLE tablename ADD UNIQUE [索引的名字] (列的列表);

CREATE TABLE tablename ( [...], UNIQUE [索引的名字] (列的列表));

在为某数据列创建索引的时候,如果能确定该数据列的值不会重复,那么应该考虑使用UNIQUE把它定义为一个唯一索引,这样会带来两个好处:1、简化MySQL对这个索引的管理工作,提高效率;2、MySQL会在插入新记录时,自动检查新记录的这个字段的值是否已经出现过了,如果是,MySQL将拒绝插入该条新记录。唯一索引可以保证数据记录的唯一性。

主键索引

每个主键字段必须有一个索引,这个索引就是主键索引,它是一种特殊的唯一索引,不允许有空值。一般是在建表的时候同时创建,记住:一个表只能有一个主键。主键索引使用PRIMARY关键字定义。

创建所用的SQL:

CREATE TABLE mytable(   ID INT NOT NULL,   name VARCHAR(16) NOT NULL,   PRIMARY KEY(ID)  );

全文索引

MySQL支持全文索引和搜索功能。MySQL中的全文索引类型FULLTEXT的索引。  FULLTEXT 索引仅可用于 MyISAM表;他们可以从CHAR、 VARCHAR或TEXT列中作为CREATE TABLE语句的一部分被创建,或是随后使用ALTER TABLE 或 CREATE INDEX被添加。对于较大的数据集,将你的资料输入一个没有FULLTEXT索引的表中,然后创建索引, 其速度比把资料输入现有FULLTEXT索引的速度更为快。

创建所用的SQL:

CREATE TABLE `mytable` (`title` varchar(100) DEFAULT NULL,`body` text,

FULLTEXT KEY `ft_title` (`title`),

FULLTEXT KEY `ft_body` (`body`)

) ENGINE=MyISAM DEFAULT CHARSET=utf8;

联合索引(复合索引)

对于复合索引:Mysql从左到右的使用索引中的字段,一个查询可以只使用索引中的一部份,但只能是最左侧部分。例如索引是key index (a1,a2,a3). 可以支持a1 | a1,a2| a1,a2,a3  这 3种组合进行查找,但不支持 a2,a3进行查找 .当最左侧字段是常量引用时,索引就十分有效。

创建所用的SQL:

CREATE index 索引名 on 表名(字段名1,字段名2)