MySql查询优化

一. 增加索引  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优化器自己判断的时间。

你可能感兴趣的:(MySql查询优化)