MySql查询优化
2022-04-12 本文已影响0人
夜雨听风_b3d5
一. 增加索引 ALTER TABLE `book` ADD INDEX idx_card( `card`);
删除索引 drop index idx_card on book;
二.通过show profiles;可以比较查询用时可以看的出来:
①在优化关联查询时,只有在被驱动表上建立索引才有效!
②left join 时,左侧的为驱动表,右侧为被驱动表!
③inner join 时,mysql 会自己帮你把小结果集的表选为驱动表。
三. STRAIGHT_JOIN只适用于inner join,并不使用与left join,right join。(因为left join,right join已经代表指定了表的执行顺序),尽可能让优化器去判断,因为大部分情况下mysql优化器是比人要聪明的。
四.
1.超过三个表禁止 join。
2.需要 join 的字段,数据类型必须绝对一致;
3.多表关联查询时,保证被关联的字段需要有索引,尽量选择NLJ算法。
4.小表驱动大表,写多表连接sql时如果明确知道哪张表是小表可以用straight_join写法固定连接驱动方式,省去mysql优化器自己判断的时间。