单一索引,覆盖索引,联合索引
如果把表看作一本电话薄,单一索引就是按照名字查询,联合索引就是按照 省份 城市 街道 查询,后者在多条件查询下比前者更快更精准。
联合索引首先按第一个字段排序,再按第二个字段排序
联合索引的关键 核心规则 最左前缀匹配原则
查询条件必须从联合索引的第一个字段开始匹配,否则索引会失效。 变全表扫描
避免与单一索引重复如果已创建 (age, city) 联合索引,无需再单独创建 age 单一索引 —— 因为 (age, city) 已能覆盖 age 的查询场景(最左前缀原则),重复创建会浪费存储空间。
注意 “范围查询” 的影响联合索引中,如果某个字段用了范围查询(>, <, >=, <=),则该字段右侧的所有字段无法再利用索引。例如:SELECT * FROM user WHERE age > 20 AND city = “北京”——age>20 是范围查询,后续 city=“北京” 无法利用索引。
create index idx_user_age_city on user(age,city);create uinque index idx_order_user_time on order (user_id, order_time);
drop index idx_user_age_city on user;