“最坏情形最优连接把这条原则用于计数:从完整连接答案中均匀抽取元组,按属性次序展开链式法则,再用增加条件不增熵与分数覆盖约束,得到输出大小的 AGM 界。均匀的是完整答案分布,投影到各输入表后…”
形式陈述 ​
全连接与分数边覆盖 ​
固定一个输出全部变量的合取查询。用有限属性集
这里没有 NULL、重复计数或额外依赖约束。任何输入表为空时,直接返回空集。以下设
AGM 界断言,对每个这样的覆盖,都有
因此,令
本页所有对数均为自然对数,熵也使用自然对数定义;
“最坏情形最优”的量词 ​
连接算法若在固定查询下,以
一般查询的 NPRR 算法有显式查询因子的界;本页完整证明输出界,并完整实现三角形查询的算法。一般 NPRR 枚举过程见原文 §3.2,不把三角形的两分支规则当作任意超图的算法。
直觉
一张表约束它所涉及属性的联合取值。三角形查询中,每个属性被两张表约束,给每张表半份权重,便恰好覆盖每个属性一次。输出元组若很多,其联合不确定性就大;但每张输入表都限制了一部分不确定性,覆盖权重把这些限制合成为总输出的上界。
执行算法面临的是另一件事:先连接两张表,可能暂时枚举许多最终会被第三张表否决的组合。共享值的度数很大时,这一步尤其昂贵。重轻分解对高度数值改从第三张表出发,对低度数值才展开二元连接,从而把两种不同的枚举成本配平。
例子与边界
三角形的精确证书与达到上界的输入 ​
取
覆盖约束是
这不只是列出四个可行解。令
整覆盖
它们非负。将三个覆盖约束分别乘以
令
三角形的重轻枚举 ​
令
Triangle(R, S, T):
if any input is empty: return
build membership indexes for R, S, T
group R and S by their B coordinate
tau = sqrt(|R| * |T| / |S|)
D = {b in keys(R): |R[b]| > tau}
for b in D: # 重值:从第三张表出发
for (a, c) in T:
if (a, b) in R and (b, c) in S:
emit (a, b, c)
for b in keys(R) with b not in D: # 轻值:展开受控的二元连接
for a in R[b]:
for c in S.get(b, empty):
if (a, c) in T:
emit (a, b, c)
每个输出的
因为
取
16 行输入为什么产生 72 与 24 ​
在每张表的两个属性位置放入同一个对称星形关系
每张表有
重轻算法取
把
集合、投影与约束的边界 ​
若每张表包含同一匹配二元组的
键约束、函数依赖或已知度数分布会缩小允许实例的范围,可能给出更强的界。AGM 使用的只是表大小和属性覆盖;上面的无三角形星形实例也表明,它通常不是单个实例的精确输出预测。
推论与应用
用条件熵证明一般 AGM 界 ​
若
乘以非负的
第二步用到了离散条件熵非负。另一方面,
运行时间实际包含什么 ​
三角形算法读取、分组并建立哈希表索引,预处理的期望时间与空间都是
答案可以流式输出,额外工作空间为
固定查询的结构常数不能在查询也增长时隐去。NPRR 原文 Theorem 3.2 给出的一般界为
参考资料
- Albert Atserias、Martin Grohe、Dániel Marx,Size Bounds and Query Plans for Relational Joins,arXiv 上传版本,§3 Lemmas 2–4(PDF pp. 6–8)给出分数覆盖界;§4.1 Theorem 10(PDF pp. 11–12)给出指定关系大小时相差至多查询相关因子的紧性。
- Hung Q. Ngo、Ely Porat、Christopher Ré、Atri Rudra,Worst-case Optimal Join Algorithms,PODS 2012,§3.1 Example 2:三角形的重轻分解;§3.2 Theorem 3.2、Remark 3.3:一般运行时间与预处理假设。
- Hung Q. Ngo,Worst-case Optimal Join Algorithms 讲义,PDF pp. 3、16、24–25、40:最坏情形最优的含义、三角形界与熵证明。在线版本访问于 2026-10-03,文件未注明授课日期。