Main-Memory Join Algorithms: Sort or Hash?


May 1, 2013


Jens Teubner


TU Dortmund University


The classical wisdom is that hashing is preferred method to implement joins in main memory. But this wisdom is now many years, if not decades, old and hardware has evolved considerably in the meantime.

In this talk I will discuss join strategies for execution in main memory, including hash and sort-merge variants. The runtime characteristics of either strategy depends critically on a suitable implementation that respects the intricacies of modern hardware architectures. I will show how hash and sort-merge joins can be implemented to maximally benefit from hardware features like vector processing (SIMD), multi-level caches, multi-core parallelism, or NUMA-style memory arrangement. And I will point to pitfalls that could mis-guide conclusions about the “best” join implementation strategy.

The join implementations discussed outperform the state of the art in join processing by several factors. Experiments on modern hardware platforms indicate that the sort-merge strategy is about to surpass hashing in upcoming hardware architectures—which might put classical wisdom upside-down.


Jens Teubner

Jens Teubner is leading the Databases and Information Systems Group at TU Dortmund University in Germany. His main research interest is data processing on modern hardware platforms, including FPGAs, multi-core processors, and hardware-accelerated networks. Previously, Jens Teubner was a postdoctoral researcher at ETH Zurich (2008¬2013) and IBM Research (2007¬2008). He holds a PhD in Computer Science from TU München (Munich, Germany) and a M.S. degree in Physics from the University of Konstanz in Germany