Explain
explain 输出sql的执行计划
展示信息
示例
字段信息
select_type查询类型
simple
subquery&&primary
primary&union&derived
select age from lsy where age=24 生成的是派生表
join查询类型
system
const
最多只有一行,利用主键或者 唯一索引匹配常量
eq_ref&&range
lsy.id>=1这里主键使用了范围查询,所有是range 连接字段都是主键,类型是eq_ref eq_ref前表中的每一行在后表中都有唯一对应的
ref和eq_ref的区别
eq_ref
select A.text, B.text where A.ID
= B.ID
foreach
(rowA
in A
)
{
if (existsInBRowWithID
(rowA.id
)
{
addToResult
(rowA.text, getRowInBWithID
(rowA.id
).text
);
break;
}
}
ref
c.id是索引,但不是唯一索引,可能是重复记录
select A.text, C.text where A.ID
= C.ID
foreach
(rowA
in A
)
{
foreach
(rowC
in C
)
{
if (rowA.id
== rowC.id
)
{
addToResult
(rowA.text, rowC.text
);
}
}
}
index 扫描全部数据,按索引去查询指定的数据
all 扫描全部数据,没有按索引列去查询,查找所有结果