数据蒋堂 | JOIN提速 - 外键指针化

  1. 云栖社区>
  2. 数据派THU>
  3. 博客>
  4. 正文

数据蒋堂 | JOIN提速 - 外键指针化

技术小能手 2017-12-08 09:41:50 浏览1435
展开阅读全文

我们来看重新定义JOIN后如何能够提高运算性能,先看外键式JOIN的情况。

设有两个表:

5baa3bf0e83eca92abe981918c5ef0b642ba1ab5

其中sales表中的productid是指向products表中id字段的外键,id是products表的主键。

现在我们想计算销售额有多少(为简化讨论,就不再设定条件了),用SQL写出来:

SELECT SUM(sales.quantity*products.price) FROM sales JOIN products ON sales.productid=products.id

基于笛卡尔积定义的JOIN,原则上只能两层循环全遍历来计算,不过这个计算量实在太大,关系数据库一般采用HASH分段方法优化,即分别计算两表关联字段的HASH值,将HASH同值记录拼到一起再做小范围遍历。网上有很多文章介绍这个算法,这里就不详述了。这样做后的复杂度能显著降低

网友评论

登录后评论
0/500
评论
技术小能手
+ 关注
所属云栖号: 数据派THU