java - 通过加入表格的优先级来提高性能
问题描述
有一个关于在Kafka中加入表的性能问题,目前拓扑定义为如下代码:
table1
.leftJoin(table2, Pair::with)
.leftJoin(table3, Pair::add)
.join(table4, (left) -> left.getValue(0).getId() Triplet::add)
.leftJoin(table5, Quartet::add)
.leftJoin(table6, Quintet::add)
我只是想知道如果我将.join移到其他人之前,可以提高使用数据的性能和速度吗?(如下面的代码):
table1
.join(table4, (left) -> left.getValue(0).getId() Pair::with)
.leftJoin(table2, Pair::add)
.leftJoin(table3, Triplet::add)
.leftJoin(table5, Quartet::add)
.leftJoin(table6, Quintet::add)
解决方案
是的,性能会有所提高。假设数据库提供者不做其他事情,例如自动优化查询。
Way 1: A left join B left join C inner join D
1.A left join B => Full records A
2.A left join C => Full records A
3.A inner join D => Partial A
Way 2: A inner join D left join B left join C
1.A inner join D => Partial A => A1( significantly improvement here)
2.A1 left join B => Full A1
3.A1 left join C => Full A1
在第 1 步,方法 2 减少了 DB 中的行数 => 用于左连接 B 和 C 的记录更少。
推荐阅读
- python - 如何在 python 中快速读取大型 xlsx 文件?
- python - 尝试使用 pip 正确安装软件包
- python - 使用 Python 计算文件夹和子文件夹中所有文件中的文本行数
- javascript - 如何根据背景更改汉堡菜单的颜色?
- r - 如何合并多个变量并创建新数据集?
- python - 为每个单词的出现添加一个随机绘制的子字符串(效率,Python)
- c# - 如何在 C# 中复制全局变量?
- xml - Gazebo 中 SDF 模型的零件脱落
- swift - 西蒙游戏,player.delegate 错误:意外发现 nil
- go - 有负的 waitGroup 计数器,但为什么