mysql执行计划分析
前言
id是一组数字,表示查询中执行select子句或操作表的顺序。
如果id相同,则执行顺序从上至下。
如果是子查询,id的序号会递增,id越大则优先级越高,越先会被执行。
id如果相同,则可以认为是一组,从上往下顺序执行,所有组中,id越高,优先级越高,越容易执行。
因为id为主键,因此遍历id索引表便能把所有t1表的所有id值获取出来了,不用去遍历实体表
这里idx_name_pwd组合索引确定唯一行,因此要获取某一行的所有字段信息,只能匹配组合索引的全部或者前缀,只匹配后缀是不会利用该组合索引的
一个查询只能用其中一个索引
表中数据有6条,但rows值为6,表示只用到了索引的‘NAME’部分而并没有用到索引的‘PWD’部分,要充分用到索引,where条件与group条件两者的顺序要与复合索引顺序一致
where与group能共用复合索引
---------------------------------------------------------------------
id username passward passward_salt ext
1 a 11 z f
2 b 12 y e
PRIMARY KEY (`id`),
KEY `idx_u` (`username`),
查id用到的是idx_u这个索引,这表明索引默认都会包含主键
-------------------------------------------------------------------------------------------------
id username passward passward_salt ext
1 a 11 z f2 b 12 y e
PRIMARY KEY (`id`),
KEY `idx_u` (`username`),KEY `idx_u_p` (`username`, `password`),
条件顺序不必与索引顺序一致
其他链接: