索引分类
单值索引 一个索引只包含一个字段/一个列 一个表可以有多个列
唯一索引:索引列的值必须唯一 但允许有空值 主键会自动创建唯一索引
符合索引:一个索引同时包括多列 特殊的单值索引
使用索引
验证索引是否使用 explain 只能写在查询之前
创建索引 主键自动创建索引 主键索引可以添加普通索引 但是 执行时不会调用 显示为null 浪费资源
查询表内的索引内容
show index from 表名
创建普通索引
create index 索引名字 on 表名(字段名); #创建索引
创建唯一索引
CREATE UNIQUE INDEX 索引名 ON 表名(字段名)
创建复合索引 多个字段添加同一索引 调用时必须写最左边的元素
最左特性 使用索引时查询条件里必须包含最左元素
CREATE INDEX 索引名 ON 表名 (字段1, 字段2) 使用and 少使用or or会导致索引失效
删除索引
alter table dept drop index (索引名)
索引扫描类型
ALL 全表扫描,没有优化,最慢的方式
index 索引全扫描,其次慢的方式
range 索引范围扫描,常用语<,<=,>=,between等操作
ref 使用非唯一索引扫描或唯一索引前缀扫描,返回单条记录,常出现在关联查询中
eq_ref 类似ref,区别在于使用的是唯一索引,使用主键的关联查询
const/system 单条记录,系统会把匹配行中的其他列作为常数处理,如主键或唯一索引查询,