- explain
- profile
explain
SQL优化->减少IO ->减少扫描的数据量。这样可以看出索引有没有用。
rows => 这呢代码sql在该优化器的执行方案中扫描的大约数据量与实际的数据有要少 ;
注意如果在实际项目中, 需要做一个某个统计操作的时候需要的数据不一定正确,这个时候
我们就使用explain来获取
select_ type:查询类型不是核心要素
SIMPLE:除了子查询或union之外的查询显示
partitions :参数的使用
type:类型. >当前sq|扫描类型
all:全表扫描性能最低
index:全索引扫描->就是根据索引去获取结果
const:读常量->主键和唯一字段(主键就是告诉数捱 库,数据的存
rang:索弓|的范围查询
eq_ ref: 最多只会有一条结果主要是也是唯一 索引
possible_ key:代表这条sq|语句可能使用到的索引是哪些
key:来决定最终使用的索引
key_len:索引的大小
extra:这是描述细节信息
null: 如果key中有标识索引那么这是一个问题叫"回表" ->使用了但是效率不- -定很高
using index: 覆盖索引->就是直接通过索引获取到了数据(效率最高)
using where: 根据条件过,虽然可能使用了索引但是,最终还是会根据条件进行数据的过滤
using temporary:意味着产生了一一个临时表
using filesort: 会对于数据在索引|外进行了排序操作
show indexes from customers1 ; #查看当前表所使用的索引
可以分析mysql sq|l的执行过程的性能瓶颈问题- >-般主要 是还是使用explain
判断一条查询的效率内存消耗,I/O消耗,CPU消耗等情况
show profile是需要开启的
set profiling = 1; # =>会监控之后的sq|在运行过程中执行的情况->资源消耗的情况
select count(*) from customers1;
show profiles;
show profile for query 136 ; #query id
query_ id:执行的sq|序列号
Duration :执行所消耗的实际
query:执行的sql
数据库卡的时候可以看看这个事务表,有哪些在跑。