MySQL优化器与JOIN策略:小结果集驱动大结果集实践分析.pdfVIP

  • 1
  • 0
  • 约小于1千字
  • 约 5页
  • 2026-05-20 发布于北京
  • 举报

MySQL优化器与JOIN策略:小结果集驱动大结果集实践分析.pdf

一般般情况下用INNERJOIN、JOIN或者WHERE等值连接,因为MySQLOptimizer会按照“小表驱动大表

的策略”进行优化。

我们的实验是基于employees表和dept_emp表,这两种表的数据总数分别为:

INNTERJOIN

谁是小表谁是大表,MySQLOptimizer会自动判断,和我们写表的顺序是无关的.一下这条语句执行结

果是和上面一样的.

JOIN

WHERE

如果是LEFTJOIN时候是以左边表驱动右边表.

MySQL优化器要确定以谁为驱动表,也就是说以哪个表为基准,在处理此类问题时,MySQL

Optimizer采用了简单的解决方法:哪个表的结果集小,就以哪个表为驱动表.

我们这时候对我们的查询修改一下,添加一些查询条件.

但是这个时候,添加天剑,a表的数据是比b表数据是少的,应该使用a表作为驱动表性能才更高,

但是MySQL并没有这么做,还是把b表作为驱动表了.

所以我们需要把a表作为驱动表,这时候可以使用STRAIGHT_JOIN

STRAIGHT_JOIN介绍

意思就是说STRAIGHT_JOIN功能同join类似,但能让左边的表来驱动右边的表,能改表优化器对于联表

查询的执行顺序。

然后再通过profiling比较一下性能:

注意:

文档评论(0)

1亿VIP精品文档

相关文档