實際例子分析面試過程中經常問到的聯合索引,給定一個查詢SQL和聯合索引,問是否會走索引。
表結構:
CREATE TABLE person (
id int(2) NOT NULL,
address varchar(255) DEFAULT NULL,
age int(11) NOT NULL,
name varchar(255) DEFAULT NULL,
PRIMARY KEY (id),
UNIQUE INDEX idx_person_01 (name, age)
)
ENGINE = MYISAM
AVG_ROW_LENGTH = 26
CHARACTER SET utf8
COLLATE utf8_general_ci;
問題一: 如果查詢字段順序調整:
EXPLAIN SELECT * FROM person WHERE age = 10 AND name ='張三';
問題二:如果查詢字段只用到了age:
EXPLAIN SELECT * FROM person WHERE age = 10 ;
問題三:如果查詢字段含有like:
EXPLAIN SELECT * FROM person WHERE name LIKE '張三%' AND age = 10 ;
EXPLAIN SELECT * FROM person WHERE name LIKE '%張三%' AND age = 10 ;
問題四:如果查詢字段含有>或者<:
EXPLAIN SELECT * FROM person WHERE age > 10 AND name = '張三';
EXPLAIN SELECT * FROM person WHERE age > 10 AND name like '張三%';
問題五:查詢條件中含有函數:
EXPLAIN SELECT * FROM person WHERE LEFT(name,2)='張三';