专栏首页性能与架构Mysql Join语句的优化

Mysql Join语句的优化

1. 尽可能减少Join语句中Nested Loop的循环总次数

最有效的办法是让驱动表的结果集尽可能地小,这也正是在本章第二节中所提到的优化基本原则之一——“永远用小结果集驱动大结果集”

比如,当两个表(表A和表B)Join时,如果表A通过WHERE条件过滤后有10条记录,而表B有20条记录。如果选择表A作为驱动表,也就是被驱动表的结果集为20,那么我们通过Join条件对被驱动表(表B)的比较过滤就会进行10次。反之,如果选择表B作为驱动表,则须要进行20次对表A的比较过滤

2. 优先优化Nested Loop的内层循环

不仅在数据库的Join中应该这样做,实际上在优化程序语言时也有类似的优化原则。内层循环是循环中执行次数最多的,每次循环节约很少的资源,就能在整个循环中节约很多的资源

3. 保证Join语句中被驱动表的Join条件字段已经被索引

其目的正是基于上面两点的考虑,只有让被驱动表的Join条件字段被索引了,才能保证循环中每次查询都能够消耗较少的资源,这也正是内层循环的实际优化方法

4. 当无法保证被驱动表的Join条件字段被索引且内存资源充足时,不要太吝惜Join Buffer的设置

在Join是All、Index、range或index_merge类型的特殊情况下,Join Buffer才能派上用场。在这种情况下,Join Buffer的大小将对整个Join语句的消耗起到非常关键的作用

本文分享自微信公众号 - 性能与架构(yogoup)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2015-07-27

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 重置多说配置后的问题,这是不让我从良的节奏啊(附禁用谷歌在线字体的方法)!

    本想今天发文从良,金盆洗手,从此不再折腾博客,安心写文章的。结果,发现多说又不能同步服务器评论到本地了!特么真是怕什么来什么啊!想来这金盆暂时用不着了。。。 想...

    张戈
  • PostgreSQL中删除的数据能否恢复

    问题的提出 有人问PostgreSQL数据库中刚刚删除的数据能否被恢复? 或更进一步,如果如要在一个事务中做了一系列的更新、删除、插入的操作后,把这个事务提交之...

    沃趣科技
  • oracle 查询转换初探

    Oracle‍‍查询转换初探 作者‍:邱大龙‍‍ 概述 Oracle查询转换器的作用是把原始sql重写为语义相同的语句,目的是为了获得更高效的sql。 ...

    沃趣科技
  • 基于Oracle的私有云架构探析(连载一)@【DTCC干货分享】

    云是当今最为热门的一个话题或者说技术,在数据库界也一样,Oracle 12G这个名字不硬生生被掰弯成了Oracle 12C,数据库云在我看来能给企业带来的第一价...

    沃趣科技
  • 超简单的MySQL主从复制配置步骤

    MySQL 估计就是俺的主战场了,看来得多收藏一些 MySQL 的技术教程才行。正愁没啥东西可以写,就先转载一篇超简单的 MySQL 主从复制的配置教程好了。 ...

    张戈
  • ASM 翻译系列第二弹:ASM 12C 版本新特性

    原作者:Bane Radulovic 译者: 邱大龙 审核: 魏兴华 随着Oracle 12c的发布,也就意味着全新版本的ASM面世了。已知的重大新...

    沃趣科技
  • 使用pg_stat_statement监控pgsql遇到的问题

    pg_stat_statements是PG中监控数据库活动的重要插件,通过它可以获得SQL的统计信息,例如该SQL被调用了多少次,返回了多少记录,在读写数据上...

    沃趣科技
  • IBM中国思变 Cognos源码授权卖给元年为哪般?

    T客汇官网:tikehui.com 撰文 | 人称T客 窦悦怡 自从将PC业务出售给联想起就开启了IBM的售卖之旅,随后相继出售了服务器业务,芯片业务,IBM ...

    人称T客
  • 【QMonitor新特性】SQL性能历史跟踪及SQL执行计划变更历史

    业界通常把DBA分为系统DBA和应用DBA两种。对于系统DBA来说,主要的职责是确保数据库系统的稳定和高效的运行。而应用DBA主要是优化应用,以求得一种“更经济...

    沃趣科技
  • Oracle并行基础

    Oracle并行基础 概述 ? Oracle企业版有一项非常厉害的技术:并行查询,也就是说一个语句可以雇佣多个服务器进程(parallel slaves也叫PX...

    沃趣科技

扫码关注云+社区

领取腾讯云代金券