このWHERE
節をアルゴリズム処理の点から等価条件を含めて理解できません。 (アルゴリズムのようにWHERE carrier= f.carrier
節が段階的に実行されるプロセスを実際に描写することができないので、私は以下のSQL文法を得ることはできないと考えています)(結果セットテーブルとその処理方法順))ここで節の等価理解
SELECT id
FROM flights AS f
WHERE distance < (SELECT AVG(distance)
FROM flights
WHERE carrier = f.carrier);
は、私はそれを理解し、carrier=f.carrier
を実行するプロセスは以下のようになります:それは相関サブクエリですので
- 、コンピュータはそれだけで最初の行を取る意味、外側のサブクエリから始まります飛行テーブルに格納された後、内側のサブクエリに移動します。
- 内部サブクエリでは、外部サブクエリの最初の行データの同じキャリアを見つけようとし、その特定のキャリアの距離の平均を見つけようとします。そして、平均を外側の副問い合わせの最初の行レコードと比較し、結果を返します。これはテーブル全体が終了するまでこれを行います。
シーケンスプロセスの理解は正しいですか?読んでくれてありがとう!
あなたの説明は私に似ています。別の質問がありますか? –
あなたの説明は正しいです。データベースがどのようにクエリを解釈して処理するかを見るためには、 'EXPLAIN PLAN'を実行するか、クエリプランを見直すこと(あなたのRDBMS、命名法、正確な構文、および出力が変わる)に役立つかもしれません。 – alroc
'EXPLAIN'は永遠に有用です。クエリに 'EXPLAIN'という接頭辞をつけるだけで、どのテーブルがどのように検索され、どのインデックスが使われているかを示すクエリプランを見ることができます。とても便利です。 – Matt