时间:2021-07-01 10:21:17 帮助过:4人阅读
?
profile定义:MySQL提供的一个可以分析SQL语句执行过程的工具,通过它大致可以了解到MySQL将如何执行用户传递过来的sql语句。
使用的时候只要在对应的sql语句前面,加上关键字explain 或者同义词 desc
# desc select * from tableName where id = 1000000;
# explain select * from tableName where id = 1000000;
以上两条sql执行效果是等价的。
?
可以先简单对比 有索引 和 无索引 执行计划:
no_index无索引的情况下分析:
?
rows: 代表查询满足该sql语句的结果,可能需要查询行的数量。
?
id存在主键索引的情况下分析:
?
type:重点分析
?
全表扫描:一行一行的逐行比较,然后返回满足条件的记录。
?
?
3. range代表范围操作,当执行的sql语句是一个范围查找的时候,也可以使用索引。
range含义解释:由于索引是排好序的结构。沿着这个有序的结构,再去截取一段有序的数据,是可以利用上索引的。
?
?
面试题:什么样的字段适合建立索引?(建立索引的时候有什么考虑?)
答:
注意:在where条件后也不是所有的字段都建立索引,因为索引本身也是有开销的。
?
当做记录统计的时候,可以直接使用索引返回记录的行数,就没必要去对磁盘文件的行数做统计。
?
?
总结:null 》system》const》range》index》all
注意:尽量不要出现all
?
网站优化—mysql explain执行计划
标签: