Scenario: you're pulling all User records that do not have any associated Activities. In Rails you may find yourself doing something like this...
User.all.select { |user| user.activities.blank? }
Pretty simple to implement, but a performance hog: Rails will load a new ActiveRecord Object for each User, then call for all activities related to the user; simply to determine, which do and don't have any Activites: bad idea.
We can achieve the same result with a fraction of the overhead, using LEFT OUTER JOIN.