偶然看到了一个题目: 给定 yfd_interviewer 数据库表结构如下:
CREATE TABLE `yfd_interviewer` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`name` VARCHAR(32) NOT NULL DEFAULT '',
`age` INT(11) NOT NULL,
`createdTime` BIGINT(20) NOT NULL,
`updatedTime` BIGINT(20) NOT NULL,
PRIMARY KEY (`id`),
KEY `name_index` (`name`),
KEY `age_index` (`age`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
给定以下 SQL:
S1: SELECT * FROM `yfd_interviewer` WHERE name = ‘ kebi ’;
S2: SELECT * FROM `yfd_interviewer` WHERE age = 20;
S3: SELECT * FROM `yfd_interviewer` WHERE name = ‘ kenan ’ AND age = 20;
S4: SELECT * FROM `yfd_interviewer` WHERE age = 20 AND name = ‘ kenan ’;
以下关于索引使用描述不正确的是哪个?
- A S1 可能使用索引 name_index
- B S2 可能使用索引 age_index\n
- C S3 可能使用索引 name_index 或 age_index
- D 相比 S3,S4 会优先使用 age_index
答案是 D,但是我不太明白,这个表里面 name 和 age 都是单列索引,虽然 S4 age 在前,SQL 在执行查询优化的时候会根据字段的顺序,优先选择 name 索引?谢谢大家