Sujith Jay Nair Thinking Aloud

tags: #joins #query-processing source: [[Skew-Strikes-Back]]

\[Q_∆ = R(A,B) ⋈ S(B,C) ⋈ T(A,C)\]

Traditional join plan for the triangle query given above, the simplest cyclic query, involves determining the best pair-wise join plan among three.

![[Pairwise.png]]

Let us take an example of a family of instances for which any of the above three join plans must run in time \(Ω(N^2)\) because the intermediate relation P is too large.

![[InstanceFamily.png]]

In the above instance, each relation has N = 2m + 1 tuples and $$ Q_∆ = 3m+1\(; however, any pair-wise join has size\) m^2 + m$$

Thus, any of the three join plans will take \(Ω(N^2)\) time. This bound holds even if we allow projections.