联合索引
- 一般建议尽量少的建单个索引,而是推荐使用联合索引,节约空间。
- 要利用联合索引查找,就要遵循最左前缀原则,否则也是不会走索引。
- 多个字段共同组织成一个索引,索引命中时可能只命中部分字段,主要看key_len
三个字段的排序:按照索引键的先后顺序维护;如果第一个字段就排好序了,后面的字段就不会再排序了,如果第一个字段都相等,那么就排第二个字段;
索引的最左前缀原理
where语句中的查询 按联合索引的从左到右的顺序进行查询
KEY `idx_name_age_position`(`name`,`age`,`position`) USING BTREE
EXPLAIN SELECT * FROM employees WHERE name ='CG' and age = 30;
EXPLAIN SELECT * FRoM employees WHERE age = 30 AND position='DEV';
EXPLAIN SELECT * FRoM employees WHERE position ='MA';
只有第1行的sql走了索引,符合最左前缀原理