MySQL join和索引

目录

 一、join

二、on

三、left join和right join

left join

right join 

四、MySQL Workbench 图形化软件


 一、join

join具有连接作用。当两个或以上的表有关系时,就可以使用jion来连接这些相关的表处理或分析数据。

join的相关连接机制如下:

会发现jion后的列名是两个表加起来后的结果(可能会出现相同的情况,就像上面例子中一样)。S1 jion S2 后,S1中的列会与S2中的列一一合并一次最后组成新的表。所以上面的例子中最后生成的新表有3 * 2 = 6个列。

如果这时候对这个新生成的表不满意,想要相对应的选项合在一起,我们可以选择使用on。

二、on

on用来添加约束。例如在使用S1 join S2合并表的时,我们想要让S1中的l1列与S2中的l2列相等匹配时,我们可以将语句改成:S1 join S2 on S1.l1 = S2.l2

在列名不重复的前提下,我们也可以直接不用.操作符。

还是上面那个例子:

可以看到合并时不再像之前那样“傻瓜式”合并了,而是将classid和id相等的列合并成一条而形成的新的表。 

三、left join和right join

两个语句是同一个性质,和join相比,left / right join的区别主要在于left / right  join必须要有on

  • left join

left join语句会检查左边表的数据是否都包含在新的表中,如果缺少就用NULL填补上:

要注意一点:对于left join来说左右表的位置很重要。在join中可以交换位置,最终生成的新表都是一样的;但是使用left join的话,交换左右表的位置最终合成的新表是完全不一样的。比如上面这个例子,如果将stu和class的位置交换:

 所以写的时候一定要注意。

  • right join 

和left join同个性质相反:

A right join B = B left join A --> 都是以B为基准的

四、MySQL Workbench 图形化软件

偶然发现的,下载之后连接上自己的库操作操作发现还挺方便的,可以在里面创建管理你的数据库。主要是可以图形化,设计的时候宏观看起来比较方便。但归根结底还是多用终端操作为好,这可以当个辅助。

MySQL Workbench 使用教程 - 如何使用 Workbench 操作 MySQL / MariaDB 数据库中文指南 - 卡拉云说起终端操作,今天还装了一个插件可以自动补全sql语句,巨巨巨巨巨方便啊(咆哮,昨天还在为SQL语句总输错而烦恼。

叫mycli,安装后使用时直接命令行打开相关库操作即可:

还能给命令和表名列名标绿色,看起来舒服多了,我爱死。 

看这可爱的自动补全
  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
MySQL的INNER JOIN操作是数据库中用来合并两个或多个表中匹配行的常用方法。当使用JOIN时,索引对于性能至关重要,尤其是在处理大量数据时。以下是关于INNER JOIN索引的一些关键点: 1. **INNER JOIN的原理**: INNER JOIN返回两个表中具有匹配键值的行。当执行JOIN时,MySQL会尝试使用这两个表中的共同列(通常是通过ON子句指定的列)来找到匹配的记录。 2. **索引JOIN的影响**: - **使用索引加速JOIN**:如果参与JOIN的列上有合适的索引(如主键或唯一索引),MySQL可以利用这些索引来快速定位匹配的记录,从而显著提高JOIN性能。 - **覆盖索引**:如果查询只需要JOIN列的数据,不需要额外的字段,那么MySQL可能会使用索引的前缀(部分索引)来满足查询,进一步减少I/O操作。 3. **最佳实践**: - 确保JOIN列上存在合适的索引,特别是当JOIN条件包含等于(=)、大于(>)、小于(<)这样的比较操作符时。 - 避免在JOIN列上创建过多的索引,因为这会占用更多磁盘空间,且JOIN操作可能需要检查每个索引,反而降低效率。 - 使用EXPLAIN分析语句检查JOIN查询的执行计划,了解MySQL如何使用索引。 4. **相关问题--**: 1. 在什么情况下,MySQL不会使用索引进行JOIN操作? 2. 如何优化非等值连接(如IN, NOT IN)的性能? 3. 如果JOIN列上没有索引,如何提高JOIN性能? 如果你需要更深入的讨论或者有具体的问题,随时告诉我。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

颜 然

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值