欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

了解下STRAIGHT_JOIN

程序员文章站 2022-04-27 13:17:49
...

测试表USER_INFO结构和数据如下:
了解下STRAIGHT_JOIN
测试表USER_ROLE结构和数据如下:
了解下STRAIGHT_JOIN
看下使用INNER JOIN的相关执行计划:

EXPLAIN SELECT * FROM USER_INFO t1 INNER JOIN  USER_ROLE t2 ON t1.USER_NAME=t2.USER_NAME

了解下STRAIGHT_JOIN
可以发现这条sql语句的驱动表是t2,因为mysql默认会选择数据量更少的表做驱动表,以小表驱动大表。

使用STRAIGHT_JOIN的执行计划:
了解下STRAIGHT_JOIN
发现这时候t1是驱动表了,这是因为STRAIGHT_JOIN可以强行指定左表为驱动表。

总结

STRAIGHT_JOIN效果和INNER JOIN类似,只是可以人为的指定驱动表,建议真正觉得需要了再用,因为一般情况下,mysql优化器都能做出正确的选择。