索引的分类:
分为3类:
1、单列索引,或者叫单值索引,即一个索引只包含单个列,一个表可以包含多个单列索引;
2、唯一索引,索引列的值必须唯一,但允许包含多个空值;
3、复合索引,即一个索引包含多个列。
创建索引:
可以在创建表的时候创建索引,也可以随时添加表的索引。
单独创建索引的语法:
全参数:
create [unique|fulltext] index 索引名称 [using index_type] on 表名(列名1,列名2...);
常用:
create index 索引名称 on 表名(列名1,列名2...);
默认创建普通索引,索引结构用BTree数据结构
表默认会对主键创建主键索引
查看索引:
show index from 表名;
删除索引:
drop index 索引名称 on 表名;
alter语句添加索引:
alter table 表名 add unique 索引名称(列名...);
alter talbe 表名 add index 索引名称(列名);
alter table 表名 add fulltext 索引名称(列名);
索引的设计原则:
对什么样的表什么字段建立什么样的索引:
1、表:查询频次高、数据量大的表;
2、字段:经常出现在where子句中的字段;
3、尽量使用唯一索引,区分度越高,索引的检索效率越高;
4、尽量使用短索引,索引也是一种数据结构,也是存放在磁盘空间中,索引长度影响IO性能;
5、索引并不是多多益善,索引也是一种数据结构,在数据的增删改操作时,也需要维护索引信息,索引过多,影响数据的增删改性能;
6、尽可能利用最左前缀法则,建立一条复合索引,相当于建立多个索引。
如复合索引(列名1,列名2,列名3),相当于建立3个索引:
第1个索引:列名1
第2个索引:列名1 列名2
第3个索引:列名1 列名2 列名3
----------------------------------------------------------------------------------------------------------------每天学习一点点,一遍不行,再来一遍----------------------------------------------