您的位置:首页 > 数据库 > MySQL

mysql index索引

2016-07-11 16:52 387 查看
All /null :  full table scan

const / primary : primary key / unique key

ref / key_name : 非primary key / unique key,可能包含多行

range/ possible_keys : 组合索引,找到A,B索引失效,可能多行

idselect_typetabletypepossible_keyskeykey_lenrefrowsExtra
1SIMPLEopponent_stagesrangeopponent_id,idx_opponent_stageopponent_id8NULL12Using where; Using filesort
组合索引里有了的,不需要单独建索引

explain select * from opponent_stages where opponent_id = 137616


idselect_typetabletypepossible_keyskeykey_lenrefrowsExtra
1SIMPLEopponent_stagesrefopponent_id,idx_opponent_stage,opponent_id_1opponent_id8const1 
group by 会创建临时表,如果索引没起作用的话

explain select count(rank) from opponent_stages where opponent_id in(137621,	137624,	137620, 137614,	137618, 137619,	137615,	137622,	137617, 137616,	137623, 137613,	137621,	137624, 137614,	137619, 137615,	137622, 137616,	137613, 137615,	137616, 137621,	137614, 137621,	137615, 137614,	137616) group by rank


idselect_typetabletypepossible_keyskeykey_lenrefrowsExtra
1SIMPLEopponent_stagesrangeopponent_id,idx_opponent_stage,opponent_id_1opponent_id8NULL12Using where; Using temporary; Using filesort
explain select * from opponent_stages where stage = 0 limit 10

idselect_typetabletypepossible_keyskeykey_lenrefrowsExtra
1SIMPLEopponent_stagesALLNULLNULLNULLNULL86576Using where
stage是组合索引的后一个,单独查询是全表,加上order by id,变成primary,好神奇

explain select * from opponent_stages where stage = 0 order by id limit 10

idselect_typetabletypepossible_keyskeykey_lenrefrowsExtra
1SIMPLEopponent_stagesindexNULLPRIMARY8NULL10Using
where

                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: