innodb引擎:數據結構
索引(Index)是幫助MySQL高效獲取數據的數據結構。咱們能夠簡單理解爲:快速查找排好序的一種數據結構測試
explain:spa
possible_key:可能用到的索引
key:用到的索引blog
無索引:索引
#無索引
EXPLAIN SELECT * FROM a WHERE id like "%3";
#無索引
EXPLAIN SELECT * FROM a WHERE id like "%3%";rem
#有索引innodb
#最左前綴原則 有索引
EXPLAIN SELECT * FROM a WHERE id like "3%";class
#or 有索引im
EXPLAIN SELECT * FROM a WHERE `name` in ('測試_7','測試_8','測試_9','測試_10','測試_11','測試_12''測試_13','測試_14','測試_15','測試_16','測試_17','測試_18');數據
#in 有索引
EXPLAIN SELECT * FROM a WHERE `name` = '測試_7'or name='測試_8'or name='測試_9'or name='測試_10'or name='測試_11'or name='測試_12'or name='測試_13'or name='測試_14'or name='測試_15'or name='測試_16'or name='測試_17'or name='測試_18';
#複合索引 MySQL組合索引「最左前綴」的結果
ALTER TABLE jinxudong ADD INDEX name_remark (name(10),remark(255));
desc jinxudong;
#索引有效
EXPLAIN SELECT * FROM jinxudong WHERE `name`='a' AND remark ='a';
#索引有效
EXPLAIN SELECT * FROM jinxudong WHERE `name`='a';
#索引失效
EXPLAIN SELECT * FROM jinxudong WHERE `remark`='a';
#有索引 由於有a 最左邊原則
EXPLAIN SELECT * FROM jinxudong WHERE `remark`='a' AND name='a';
# 舉例:給 a b c 創建組合索引 則 a有效 abc有效 ab有效 bc無效 b c 都無效