语法如下:
alter table 表名 add index 索引名 (字段名) ;创建普通索引
alter table 表名 add unique 索引名 (字段名) ;创建唯一索引
alter table 表名 add primary key (字段名) ;创建主键索引
(2)使用create index语句对表增加索引。
create index 索引名 on 表名(字段名) ;创建普通索引
create unique index 索引名 on 表名(字段名) ;创建唯一索引
注意:不能用create index语句创建primary key索引。
但可以在创建表的时候就指定主键索引,如:
CREATE TABLE mytable( ID INT NOT NULL, username VARCHAR(16) NOT NULL, PRIMARY KEY(ID) );
(3)删除索引。
drop index 索引名 on 表名 ;
alter table 表名 drop index 索引名 ;
alter table表名 drop primary key ;这条语句只在删除PRIMARY KEY索引中使用,因为一个表只可能有一个PRIMARY KEY索引,因此不需要指定索引名
(4)组合索引
alter table 表名 add index 索引名(字段1,字段2,字段3);
建立这样的组合索引,其实是相当于分别建立了下面三组组合索引:
第一组:字段1,字段2,字段3;
第二组:字段1,字段2;
第三组:字段1;
为什么没有字段2,字段3这样的组合呢?这是因为MySQL组合索引“最左前缀”的结果。简单的理解就是只从最左面的开始组合。
下面语句用到了组合索引:
select * from 表名 where 字段1=xx and 字段2=xx;
下面的语句没有用到组合索引:
select * from 表名 where 字段2=xx and 字段3=xx;
select * from 表名 where 字段2=xx;
就是说如果没有刚才那三组形式的组合,都不算作是用到了组合索引。