一、普通索引
创建索引
CREATE INDEX indexName ON mytable(username(length));
创建表的时候直接指定
ALTER mytable ADD INDEX [indexName] ON (username(length))
删除索引的语法:
DROP INDEX [indexName] ON mytable;
二、唯一索引
它与前面的普通索引类似,不同的就是:索引列的值必须唯一,但允许有空值。如果是组合索引, 则列值的组合必须唯一。
CREATE UNIQUE INDEX indexName ON mytable(username(length))
三、主键索引
它是一种特殊的唯一索引,不允许有空值。一般是在建表的时候同时创建主键索引
CREATE TABLE mytable( ID INT NOT NULL, username VARCHAR(16) NOT NULL, PRIMARY KEY(ID) );
四、组合索引
ALTER TABLE mytable ADD INDEX name_city_age (name(10),city,age);[code]
usernname,city,age usernname,city usernname 为什么没有 city,age这样的组合索引呢? 这是因为MySQL组合索引“最左前缀”的结果。
五、建立索引的时机
MySQL只对<,<=,=,>,>=,BETWEEN,IN,以及某些时候的LIKE才会使用索引
在以通配符%和_开头作查询时,MySQL不会使用索引
会使用
SELECT * FROM mytable WHERE username like'admin%'
不会使用
SELECT * FROM mytable WHEREt Name like'