高并发大数据之mysql数据库join原

北京市中科医院好不好 http://baidianfeng.39.net/a_zzzl/170125/5212076.html

在面试过程中,80%都会遇到mysql数据库优化相关的技术点,下面简单的讲解下数据库join连表查询的优化方式。

首先明白join的原理

join原理

首先介绍一种基础算法:NLJ,嵌套循环算法。重点join的多表查询方式:循环外层是驱动表,循坏内层是被驱动表

例如:

foreachrow1fromt1

foreachrow2fromt2

ifrow2matchrow1//row2与row1匹配,满足连接条件

joinrow1androw2intoresult//连接row1和row2加入结果集

首先加载t1,然后从t1中取出第一条记录,之后加载t2表,与t2表中的记录逐个匹配,连接匹配的记录。

在项目的用户量日积月累,原来的数据库查询方式就会有问题,出现慢查询,因此就需要将这些慢查询解决掉。提高查询速度。

1.内循环的次数:由此得出,小表驱动大表能够减少内循环的次数从而提高连接效率。

2.快速匹配:在被驱动表建立索引能够提高连接效率

3.排序:优先选择驱动表的属性进行排序能够提高连接效率。

举例分析:t1大表t2小表

左连接

左表是驱动表,右表是被驱动表。想要快速查找被驱动表中匹配的记录,所以我们可以在右表建索引,从而提高连接性能。

右连接

右表是驱动表,左表是被驱动表,想要快速查找被驱动表中匹配的记录,所以我们可以在左表建索引,从而提高连接性能

内连接

不管谁内连接谁,都是用小表驱动大表,所以如果要优化内连接,可以在大表上建立索引,以提高连接性能。

总结:

想要从快速匹配的角度优化JOIN,首先就是找出谁是驱动表,谁是被驱动表,然后在被驱动表上建立索引即可。




转载请注明:http://www.aierlanlan.com/tzrz/2262.html

  • 上一篇文章:
  •   
  • 下一篇文章: