MySQL小表join大表的正确使用姿势(straight_join 关键字的使用)

网上有种说法是:由于一般是采用小表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

发布了732 篇原创文章 · 获赞 336 · 访问量 77万+

猜你喜欢

转载自blog.csdn.net/a772304419/article/details/103893613