数据库索引调优
Posted gis-sky
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据库索引调优相关的知识,希望对你有一定的参考价值。
一、索引
1、索引类型
普通索引:无任何限制的索引
唯一索引:列值唯一的索引,可以为空值
主键索引:表的主键,特殊的唯一性索引,不能为空值
组合索引:多个字段上的索引,遵循左前缀集合
全文索引:来查找文本中的关键字
2、使用explain+sql语句进行调优
(1)explain包含的信息包含:
主要从id、type、key、rows、Extra分析
(2)id
表示执行的先后顺序,id值大的先执行,小的后执行,id值相同的从上到下执行
(3)type
访问类型,结果值从好到坏依次是:system > const > eq_ref > ref > fulltext > ref_or_null > index_merge > unique_subquery > index_subquery > range > index > ALL
建议尽量达到range级别,常见类型介绍如下:
const:通过索引一次找到,通常用于主键或唯一性索引
eq_ref:唯一性索引扫描,对于每个索引键,表中只有一条记录与之匹配。常见于主键 或 唯一索引扫描。
ref:非唯一性索引扫描,返回匹配某个单独值的所有行
range:只检索给定范围的行,使用一个索引来选择行。key列显示使用了那个索引。一般就是在where语句中出现了bettween、<、>、in等的查询
index:Index与ALL虽然都是读全表,但index是从索引中读取,而ALL是从硬盘读取
ALL:Full Table Scan,遍历全表以找到匹配的行
(4)key
实际使用的索引,如果为NULL,则没有使用索引。查询中如果使用了覆盖索引,则该索引仅出现在key列表中
(5)rows
根据表统计信息及索引选用情况,大致估算出找到所需的记录所需要读取的行数
(6)Extra
Using index: 表示相应的select操作中使用了覆盖索引(Covering Index),避免了访问表的数据行,效率高 ,如果同时出现Using where,表明索引被用来执行索引键值的查找,如果没用同时出现Using where,表明索引用来读取数据而非执行查找动作。
以上是关于数据库索引调优的主要内容,如果未能解决你的问题,请参考以下文章