MySQL索引及执行计划
MySQL索引及执行计划 索引 合理的建立索引可以加快数据查询,例如,学校图书管为每一本书编号,根据编号可以快速锁定一本书所在位置。MySQL索引默认B+树索引。索引虽然能够提高检索效率,但同时也会降低更新的速度,因为 insert 、update、delete 也会操作索引文件,会调整因为更新等操作带来的键值变化后的索引信息。 索引类型 主键索引:唯一索引,并且并指定为 primary key ,每个表中只能有一个主键 唯一索引:索引列的所有值都只能出现一次,即值必须唯一,值可以为空 普通索引:基本的索引类型,值可以为空,没有唯一性限制 复合索引:一个索引中包含多个列 何时建立索引 主键自动创建唯一索引 频繁作为查询条件的字段适合创建索引 查询中与其他表关联的字段适合创建索引 频繁更新的字段不适合创建索引,因为在更新记录的同时会更新索引 where条件中使用不到的字段不需要创建索引 在高并发下,在单值索引和复合索引中,复合索引更合适 order by字段添加索引可以提高排序速度 不需要索引 表记录较少 经常增删改的表 数据重复且分布平均的表,如性别 执行计划 可以使用 explain 关键字模拟优化器执行sql查询语句,从而分析查询语句或者表结构的性能瓶颈。 通过查看执行计划,可以了解到表的读取顺序、数据读取操作、哪些索引可以使用、哪些索引被实际使用、表之间的引用