MySQL索引分为单列索引和多列索引
一、单列索引:普通索引,主键索引,唯一索引,全文索引
1.索引分类:
主键索引:列值唯一,值中不能有null,一张表只能创建一个
唯一索引:列值唯一,值中可以有null
普通索引:普通的索引
全文索引:仅存在于MyISAM引擎
2.通过创建添加索引
主键索引:创建时指定primary key / 修改时使用alter table user add primary key(id)
唯一索引:create unique index_unique on user(ordertime)
普通索引:create index index_putong on user(total)
全文索引:create fulltext index index_fulltext on user(goods_detail)
3.通过修改添加索引(略,同步骤2)
4.创建表的时候添加索引(略,同步骤2)
5.索引的底层实现(暂缓,有时间再研究)
主键索引底层实现是BTREE
唯一索引底层实现是BTREE
普通索引底层实现是BTREE
全文索引底层实现是FULLTEXT
//唯一索引底层实现是Hash,仅支持memory存储引擎
二、组合索引:
1.创建语法
create index index_name on table_name(column1_name,column2_name);
2.使用场景
业务的查询往往会用到比较多的查询条件,比如在orders表中会使用到ordertime、total、address字段,那么我们为了提高查询效率,创建这三个字段的索引。
当我们创建ordertime、total、address三个字段的索引的时候,其实创建了三个索引,分别是ordertime,total,address三个字段的索引,如下图。
3.组合索引生效场景
当我们将以上三个字段创建为组合索引之后,以下条件是会使用到组合索引的。
(1).包含有ordertime的条件。
对,你没有看错,有且仅有包含ordertime的查询条件才会生效。这是因为MySQL的最左策略。也就是说,如果创建组合索引的顺序是total、ordertime、address,那么有且仅有包含total的查询条件才使用到该索引。
参考地址:https://blog.csdn.net/b1303110335/article/details/81976289