INNER JOIN之前的WHERE子句

use*_*535 27 mysql optimization join where

如果我有

SELECT * FROM Table1 t1 
LEFT JOIN Table2 t2 ON t1.id = t2.id 
WHERE t1.user='bob';
Run Code Online (Sandbox Code Playgroud)

WHERE子句是在两个表之后运行的JOINED吗?

如何使它在JOIN之前运行?

Mos*_*cho 85

where子句将在join它之前执行,以便它不会加入不必要的记录.所以你的代码就好了.

  • @ user1124535我可以确认一下.运行`explain`查询,你会看到. (7认同)
  • 谁能确认吗? (5认同)
  • 这应该会得到更多的赞成 (4认同)
  • 这是更好的答案. (2认同)

hkf*_*hkf 27

更改WHERE为另一个JOIN条件

LEFT JOIN Table2 t2 on t1.id = t2.id AND t1.user='bob'