title: Is a join equivalent to a filtered cartesian product?
body: <p>If you want to join two tables there are essentialy two ways of doing that:</p>
  
  <p>the "correct", didactical way:</p>
  
  <pre><code>select * from t1 join t2 on t1.col1=t2.col1
  </code></pre>
  
  <p>and the dirty way:</p>
  
  <pre><code>select * from t1,t2 where t1.col1=t2.col1
  </code></pre>
  
  <p>both of them lead to the same result but are they equivalent also in terms of performance? I would still prefer the first way because it is the one that intuitively makes more sense to me: people came up with the join clause for a reason and I can immediately distinguish a select from a join.</p>
  
  <p>But, truth to be said, I saw a lot of queries made with the second way and I'm wondering why people do that...</p>