考虑 3 个表(*
用于主键,+
用于外键):
User {*id:INTEGER, name:VARCHAR(45)}
Flight {*id:INTEGER, service:VARCHAR(45), departureDate:DATETIME}
Reservation { +userId, +flightId }
数据:
用户:
航班:
预订:
以下查询将获取旅行的乘客列表2013-05-06
:
SELECT *
FROM user u, flight f, reservation r
WHERE u.id=f.id AND r.userid=u.id AND r.flightid=f.id AND f.departureDate='2013-05-06'
我的问题是:
SQL 引擎如何处理 WHERE 子句?参考上面的查询,是不是先用r.userid=u.id将r和f组合成临时数据表T1,然后r.flightid=f.id把T1和f组合成另一个临时表T2,最后过滤departmentData在T2?
如果子句更改为:
WHERE f.departureDate='2013-05-06' AND u.id=f.id AND r.userid=u.id AND r.flightid=f.id
在这种情况下 f.departureDate='2013-05-06' 会减少行以形成临时表吗?