1. 索引分类
1) 单值索引:一个索引只包含单个列,一个表可以有多个单列索引
2) 唯一索引:索引列的值必须是唯一,但允许有空值
3) 复合索引:即一个索引包含多个列
2. 索引语法
1. 创建索引
默认是BTREE 类型
CREATE [UNIQUE|FULLTEXT|SPATIAL] INDEX index_name
[USING index_type] ON tbl_name(index_col_name, ...)
2. 查看索引
show index from table_name;
3. 删除索引
DROP INDEX index_name ON tal_name;
4. ALTER 命令与索引
--1. 该语句添加一个主键,这意味着索引值必须是唯一的,且不能为NULL
alter table tb_name add primary key(column_list);
--2. 创建唯一索引
alter table tb_name add unique index_name(column_list);
--3. 添加普通索引
alter table tb_name add index index_name(column_list);
--4. 创建全文索引
alter table tb_name add fulltext index_name(column_list);
3. 索引设计原则
-
对查询频次高较高,且数据量大的表建立索引
-
索引字段最佳候选列应从where子句的条件中提取。如果where子句中的组合比较多,那么应当挑选最常用、过滤效果最好的列的组合。
-
使用唯一索引,区分度越高,使用索引的效率越高
-
应该控制索引的数量,不宜过多导致维护损耗变大
-
使用短索引,索引创建之后也是使用硬盘来存储的,因此提升索引访问的I/O效率,也可以提升总体的访问效率。
-
利用最左前缀,N个列组合而成的组合索引,那么相当于创建了N个索引,如果查询时where子句中使用了组成该索引的前几个字段,那么这条查询SQL可以利用组合索引来提升查询效率。