索引类型
- UNIQUE(唯一索引): 不可以出现相同的值,可以有NULL值;
- INDEX(普通索引): 允许出现相同的索引内容;
- PROMARY KEY(主键索引): 不允许出现相同的值;
- fulltext index(全文索引): 可以针对值中的某个单词,但效率确实不敢恭维;
- 组合索引: 实质上是将多个字段建到一个索引里,列值的组合必须唯一;
查看表中索引的基数
sql语句:show index from 表名
具体见: show index from table查看表的索引基数
创建索引
利用alter table语句创建索引
应用于表创建完毕之后再添加,sql语句:alter table 表名 add 索引类型 [索引名] 字段名(字段范围)
- alter table 可用于创建普通索引、UNIQUE索引和PRIMARY KEY索引3种索引格式
- table_name是要增加索引的表名
- column_list指出对哪些列进行索引,多列时各列之间用逗号分隔。
- 索引名index_name可选,缺省时,MySQL将根据第一个索引列赋一个名称。
- 另外,ALTER TABLE允许在单个语句中更改多个表,因此可以同时创建多个索引
例子:
普通索引
alter table table_name add index index_name (column_list) ;
唯一索引
alter table table_name add unique (column_list) ;
主键索引
alter table table_name add primary key (column_list) ;
用 create index 语句创建索引
sql语句:`CREATE INDEX index_name ON table_name(username(length));
- `CREATE INDEX可用于对表增加普通索引或UNIQUE索引,可用于建表时创建索引
- 如果是CHAR,VARCHAR类型,length可以小于字段实际长度;
- 如果是BLOB和TEXT类型,必须指定 length
create只能添加这两种索引;
CREATE INDEX index_name ON table_name (column_list)
CREATE UNIQUE INDEX index_name ON table_name (column_list)
删除索引
三种方法如下:
- drop index index_name on table_name ;
- alter table table_name drop index index_name ;
- alter table table_name drop primary key ;