网上有种说法是:由于一般是采用小表join大表的方式(可以提高效率),所以有人说将小表放在左边,让它先执行,记住,这种说法是错误的!!!有例为证:
我们看上例:
film inner join film_actor using(film_id) inner join actor using(actor_id)
的执行顺序是——
actor>>film_actor>>film
如下图:
使用 straight_join 关键字可以保证严格按照书写顺序来作为表的执行顺序,但是却牺牲了性能。
上图中没有使用该关键字,要扫描的行数比使用了 straight_join 关键字的行数要少很多,也就是MySQL自动进行了优化
我们可以使用
show status like 'last_query_cost'
来查询上一条sql需要查询的数据页数量
7892 VS 8885