mysql基础11——索引

时间:2024-04-23 07:13:56

索引

mysql高效访问数据的方式——>索引  快速检索数据的存储结构

索引分为单字段索引和双字段索引

单字段索引

创建单字段索引:
方式1:create直接创建索引 
create index 索引名 on table 表名(字段);
方式2:在创建表的同时创建索引 
create table 表名 (字段,数据类型,...,{index|key} 索引名 (字段))
方式3:直接修改表创建索引
alter table 表名 add {index|key} 索引名 字段名;

注意 设定主键约束或唯一性约束时,mysql会自动创建主键索引或唯一索引

要知道索引是如何起作用的 需要在语句前加上explain这个关键字 帮助查看sql语句的执行细节。包括表的加载顺序 表是如何连接的 以及索引的使用情况

注:选择索引字段时,选择那些经常被用作筛选条件的字段创建索引, 提高检索效率

组合索引

包含多个字段的索引 ,mysql最多支持由16个字段组成的组合索引

若有多个索引,而这些索引的字段同时作为筛选字段出现在查询中的时候,mysql会选择使用最优的索引执行查询操作

让这几个筛选字段同时发挥作用,就要用到组合索引了

创建组合索引
 方式1:create直接创建索引 
create index 索引名 on table 表名 (字段1,字段2,...);
方式2:在创建表的同时创建索引 
create table 表名 (字段,数据类型,...,{index|key} 索引名 (字段1,字段2,...))
方式3:直接修改表创建索引
alter table 表名 add {index|key} 索引名 (字段1,字段2,...);

!!!组合索引的原理:

组合索引的多个字段是有序的,遵循左对齐原则;

筛选的条件的顺序要与创建组合索引的顺序相一致

删除索引

drop index 索引名 on 表名

删除主键索引(不能直接删除,只能通过修改表删除索引

alter table 表名 drop primary key;

创建索引是有成本的,主要是2个方面 一个是存储空间的开销,一个是数据操作的开销

        存储空间的开销:索引需要单独占用存储空间

        数据操作的开销:数据表有变动,若涉及索引字段,需对索引本身进行修改来确保索引能够指向正确的记录