索引是存储引擎用于提高数据库表的访问速度的一种数据结构。
创建一张user表,表中包含:id、code、age、name和height字段
此外,还创建了三个索引:
id:数据库的主键
idx_code_age_name:由code、age和name三个字段组成的联合索引
idx_height:普通索引
CREATE TABLE
user
(
id
int NOT NULL AUTO_INCREMENT,
code
varchar(20) COLLATE utf8mb4_bin DEFAULT NULL,
age
int DEFAULT '0',
name
varchar(30) COLLATE utf8mb4_bin DEFAULT NULL,
height
int DEFAULT '0',
address
varchar(30) COLLATE utf8mb4_bin DEFAULT NULL,PRIMARY KEY (
id
),KEY
idx_code_age_name
(code
,age
,name
),KEY
idx_height
(height
)) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin
插入数据
INSERT INTO USER VALUES (1, '101', 21, '周星驰', 175,'香港');
INSERT INTO user VALUES (2, '102', 18, '周杰伦', 173,'台湾');
INSERT INTO user VALUES (3, '103', 23, '苏三', 174,'成都');
查看数据库版本
select version();
查看该sql语句的执行计划,来判断索引使用情况
explain select * from user where id=1;
索引失效
1.1 不满足最左匹配原则(联合索引)
-- 哪些情况索引有效?
explain select *