SELECT * FROM A t1
INNER JOIN B t2 ON t1.id=t2.id AND t1.user = '123'
SELECT * FROM A t1
INNER JOIN B t2 ON t1.id=t2.id
WHERE t1.user = '123'
SELECT * FROM (SELECT * FROM A WHERE user = '123') t1
INNER JOIN B t2 ON t1.id=t2.id
这三条sql的效果应该都是一样的,想问一下,哪一条效果更好?(我个人使用第三条,被别人被喷了,理由是创建了一个临时表,加重了负担,推荐我用第一条)
建议使用第二条,逻辑上更清晰一些
t1.id=t2.id是表关联的条件,t1.user = '123'是过滤条件,不建议放到一起。
第三条,如果是oracle数据库的话,不存在临时表的说法,在执行效率上和第一条应该是等价的。