阅读之后,这不是Explicit vs Implicit SQL Joins的重复.答案可能是相关的(甚至是相同的),但问题是不同的.
有什么区别,应该分别做些什么?
如果我理解正确的理论,查询优化器应该能够互换使用.
使用 SQLAlchemy,我执行如下查询:
import models as m
import sqlalchemy as sa
s = session_maker()
q = s.query(m.ShareCount, m.Article)
.join(m.Article)
.filter(sa.and_(start < m.ShareCount.tstamp, m.ShareCount.tstamp < end))
Run Code Online (Sandbox Code Playgroud)
是在执行filter之前还是之后应用?join
Query中的执行顺序如下:
SELECT * FROM [users] WHERE [userid] = 50001 AND [username] = 'new user'
Run Code Online (Sandbox Code Playgroud)
我的问题是首先匹配的内容 - [userid]或[username].
因此会影响执行时间.
任何改进此查询的建议都将受到关注.