問合せがどのように処理されるか

このトピックでは、EQL問合せ処理のステップを順に説明します。

注意: この抽象化した処理モデルは説明を目的とするものであり、実際の問合せの評価が反映されているわけではありせん。

各文を処理する前に、EQLはその文のソース・レコードを計算します。レコードが単一の文またはコレクションからのものである場合、ソース・レコードはそれぞれ、その文の結果レコードまたは適切にフィルタリングされたコレクション・レコードです。レコードがJOINからのものである場合は、左右からのレコードのペアのうち、そのレコード・ペアに対する結合条件の評価結果がtrueとなるものごとに1つのソース・レコードが存在します。処理前に、文の順序が必要に応じて変更されます。これは、文が他の文に依存している場合に、依存される文が先に処理されるようにするためです。

その後で、EQLは問合せを次の順序で処理します。問合せの各文の中の各ステップが実行され、各文が順に実行されます。
  1. WHERE句に従ってソース・レコードをフィルタリングします(文と集計ごとの両方)。
  2. ソース・レコードごとに、GROUP BY句で使用されるSELECT句(また、SELECT句からのものではないGROUP BY)および集計の引数を計算します。
  3. ソース・レコードを結果レコードにマッピングし、集計を計算します。
  4. SELECT句の計算を完了します。
  5. HAVING句に従って結果レコードをフィルタリングします。
  6. 結果レコードを順に並べます。
  7. 結果にページングを適用します。