mysql索引

索引的分类:

分为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

----------------------------------------------------------------------------------------------------------------每天学习一点点,一遍不行,再来一遍----------------------------------------------

原文地址:https://www.cnblogs.com/juanzila/p/15602946.html