多表查询加索引方法
考虑设计两个数据表,教师表 和 课程表
字段情况如下表所示:
现在对其进行跨表左连接查询,SQL语句为:
select * from teacher2 t left outer join course2 c on t.cid=c.cid where c.cname='java';
那么在关联查询的情况下,索引应该怎么加呢?
把握三个原则:
- 左外连接或者右外连接,就给左表或者右表加索引。(左外连接说明保障左表,以左表为基础)
- 加在数据量小的表上(数据量小的表在外侧,外侧的循环次数少,有利于程序运行)
- 加在常用或者关键的字段上
因此,应该添加如下索引:
alter table teacher2 add index index_teacher2_cid(cid);
alter table course2 add index index_course2_cname(cname);
教程目录
SQL优化教程01-MySQL分层
SQL优化教程02-SQL解析
SQL优化教程03-B树和索引
SQL优化教程04-explain的用法
SQL优化教程05-优化案例1单表查询
SQL优化教程06-优化案例2多表查询
SQL优化教程07-避免索引失效的原则
SQL优化教程08-SQL排查
SQL优化教程09-锁机制