【MySQL】驱动表、被驱动表详解。—— 性能优化。

我是一名立志把细节都说清楚的博主,欢迎【关注】🎉 ~

原创不易, 如果有帮助 ,记得【点赞】【收藏】 哦~ ❥(^_-)~

如有错误、疑惑,欢迎【评论】指正探讨,我会尽可能第一时间回复的,谢谢支持


什么是 驱动表 和 被驱动表?

在2个表或2个以上表的连接查询中(多数涉及关键字 JOIN ),才会涉及 驱动表被驱动表

在使用多表嵌套连接时,首先,会全表扫描该一个表作为查询条件,这个表叫做 驱动表。然后用驱动表返回的结果集逐行去匹配的表,叫做 被驱动表

具体使用场景,请看文章:
【MySQL】连接查询(JOIN 关键字)—— 图解:内连接、外连接、左连接、左外连接、右连接、右外连接


哪个表是驱动表?

  • 驱动表是由 MySQL 优化器选择的
  • 我们只能通过理解优化器的选择倾向,让某个表更接近优化器的选择标准,让这个表尽可能的成为驱动表。

优化器选择驱动表的原则是:让查询的性能更好。 基于这个原则,可以从以下几个方面考虑:

  • 小表优先: 因为驱动表会被全表扫描,所以优先选择小表作为驱动表。全表扫描的效率更高。
  • 有where条件的优先: 优化器优先选择有过滤条件的表作为驱动表,能够减少部分匹配操作。
  • 连接类型:
    • LEFT JOIN / LEFT OUTER JOIN:这两个关键字会返回左表中的所有的记录(符合驱动表全表扫描的特性),而右表的匹配记录是可选的。所以会优先选择左表为驱动表。
    • RIGHT JOIN / RIGHT OUTER JOIN:优先选择右表作为驱动表,原理同上。
    • INNER JOIN:优化器会评估执行计划中表的扫描次数,需要扫描次数更少的表优先作为驱动表。

性能优化建议:

我们应该有意识的调整驱动表更符合MySQL 优化器的选择标准。

  • 尽可能使用小表作为驱动表。驱动表因为要被全表扫描,所以我们在选择上,我们应该尽量选择小表作为驱动表(至少是相对小表)。
  • 更具需要增加筛选条件,减少部分匹配操作。
  • 根据连接类型的特点调整驱动表的位置。 让驱动表符合不同连接查询选择驱动表的倾向。
  • 被驱动表使用索引。 被驱动的表通常是大表,对于大表,我们可以使用索引优化查询效率。

我是一名立志把细节都说清楚的博主,欢迎【关注】🎉 ~

原创不易, 如果有帮助 ,记得【点赞】【收藏】 哦~ ❥(^_-)~

如有错误、疑惑 ,欢迎【评论】指正探讨,我会尽可能第一时间回复的,谢谢支持

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
MySQL中,对多关联的性能进行优化可以采取以下几个方法: 1. 确保适当的索引:为参与关联的列创建索引,特别是在关联列上创建索引。这将加快关联操作的速度并提高查询性能。 2. 使用合适的关联类型:根据实际需求选择适当的关联类型,如INNER JOIN、LEFT JOIN等。不同的关联类型适用于不同的情况,选择合适的关联类型可以提高查询效率。 3. 限制返回的列:只选择需要的列而不是使用通配符(*)选择所有列。这可以减少数据传输和处理的开销,提高查询性能。 4. 避免多余的关联:仔细审查查询逻辑,避免不必要的多关联。只关联必要的和列,减少不必要的数据处理和连接操作。 5. 使用临时或子查询:在某些情况下,使用临时或子查询可以提高多关联查询的性能。通过将中间结果存储在临时或子查询中,可以减少多次关联操作和数据传输。 6. 定期优化结构:优化结构、调整数据类型、删除无用的索引等可以提高多关联查询的性能。使用EXPLAIN语句来分析查询计划,并根据其结果进行相应的优化。 7. 考虑分区:如果数据量较大,可以考虑将进行分区。通过将数据分散到多个分区中,可以提高查询性能。 这些是一些常见的方法,但优化的具体策略取决于具体的业务需求和数据库结构。建议根据实际情况进行性能测试和调优,并根据结果采取适当的优化措施。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我梦Leo

谢谢无敌帅气可爱迷人的你哦 ~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值