When joining, I like to use ON + AND a lot. I heard that this tends to have better performance than running a WHERE query. And it worked well as long as I stayed with INNER JOINS. Imagine my surprise when I needed to do a LEFT JOIN while performing a conditional match. I expected a single row back, but SQL returned every single possible row instead.
After searching around, I found this link:
http://www.codeproject.com/Articles/231132/Difference-between-And-clause-along-with-on-and-Wh
Currently, I’m building up a website, so I can’t begin using Explain to tune. In the meantime, I’m going to use WHERE to filter the list whenever I have an Outer join. If this ends up killing performance, I’ll have to find a way to alter the queries later.