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 を形成し、最後に DepartureData をフィルタリングします。 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' は行を減らして一時テーブルを形成しますか?