SQL Server implements three different physical operators to perform joins. In this session, we will examine how each of these operators works, including its advantages and challenges. Using real life examples, we will better understand the logic behind the optimizer’s decisions on which operator to use for various joins. Finally, we will learn how to avoid some common join related pitfalls and how to get better performance from our queries.