MySQL优化(2020-04-20)
通过explain分析低效sql的执行计划
表示列 | 中文含义 | 取值 |
---|---|---|
select_type | 表示的查询类型 | sumple(简单表,不使用表的链接查询和子查询) primary_key(主查询) union(union中后面的查询) subquery(子查询) |
table | 查询的表 | 表名 |
type | 查询的类型 | all(全表扫描) /index(索引的全扫描) /range(区间查询) /ref(非唯一索引扫描/唯一索引前缀扫描) /eq_ref(和ref差不错使用唯一索引扫描) /const,system(常量级别查询,primary_key和唯一索引) /null(因为等于null直接不使用索引和访问表直接可以返回结果) /ref_or_null(和ref类似包含的对列值null的查询) |
possible_keys | 查询可能使用到的索引 | null |
key | 表示使用的索引 | null |
key_len | 使用索引的长度 | null |
rows | 扫描得到的行数 | null |
Extra | 表示查询的得到其他的情况 | null |
常用的使用优化命令
explain extended 优化命令 使用该命令加上show warning可以看到sql优化器对sql改写
// 第一步
explain extended $sql;
// 第二步
show warning;