- where 后的字段:
SELECT id, name FROM users WHERE name = '张三';
where 中的 name 字段可以通过添加索引优化查询速度。
- join 查询的 on:
SELECT
e.name,
t.title
FROM
employees e
LEFT JOIN titles t ON t.emp_no = e.emp_no;
emp_no 可以加索引加速查询。
-
order by 字段:
order by 后的字段可以利用 B+ 树索引的顺序性。 -
覆盖索引:
如果用户表 users 包含 id, name, age, gender 四个字段, id 是自增主键,创建普通索引 idx_name_age on (name,age)。
SELECT name, age, gender FROM users WHERE name = '张三';
上面的语句将会查询两个树,一颗普通索引树,一颗主键索引树。先在普通索引树通过 name 找到主键 id,再在主键索引树查询 name, age, gender 数据。
SELECT name, age FROM users WHERE name = '张三';
而上面的这个 sql 查询只需要查询普通索引树,因为普通索引树中已经包含 name 和 age,没有必要再查询主索引树了。
参考:
索引使用场景(重点) - CSDN
联合索引的 B+ 树结构:联合索引在B+树上的存储结构及数据查找方式 - 掘金
联合索引为什么能够使用覆盖索引:MySQL 覆盖索引详解 - 掘金