索引
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个方面 一个是存储空间的开销,一个是数据操作的开销
存储空间的开销:索引需要单独占用存储空间
数据操作的开销:数据表有变动,若涉及索引字段,需对索引本身进行修改来确保索引能够指向正确的记录