Would like to know how the Joining (e.g. LEFT JOIN, CROSS JOIN) is implemented? Is the complexity O(N*M) as it seems quite slow and takes a lot memory for large table. Any insights would be welcome.
Most joins are implemented as shuffle or broadcast hash joins. However, cross joins will always use nested loop joins. You can see which join implementation was chosen by the cost based optimized in the physical plan. This is in the query profile → planning tab. Do you have a profile?