このトピックでは、EQL問合せ処理のステップを順に説明します。
注意: この抽象化した処理モデルは説明を目的とするものであり、実際の問合せの評価が反映されているわけではありせん。
各文を処理する前に、EQLはその文のソース・レコードを計算します。レコードが単一の文またはコレクションからのものである場合、ソース・レコードはそれぞれ、その文の結果レコードまたは適切にフィルタリングされたコレクション・レコードです。レコードがJOINからのものである場合は、左右からのレコードのペアのうち、そのレコード・ペアに対する結合条件の評価結果がtrueとなるものごとに1つのソース・レコードが存在します。処理前に、文の順序が必要に応じて変更されます。これは、文が他の文に依存している場合に、依存される文が先に処理されるようにするためです。
その後で、EQLは問合せを次の順序で処理します。問合せの各文の中の各ステップが実行され、各文が順に実行されます。
- WHERE句に従ってソース・レコードをフィルタリングします(文と集計ごとの両方)。
- ソース・レコードごとに、GROUP BY句で使用されるSELECT句(また、SELECT句からのものではないGROUP BY)および集計の引数を計算します。
- ソース・レコードを結果レコードにマッピングし、集計を計算します。
- SELECT句の計算を完了します。
- HAVING句に従って結果レコードをフィルタリングします。
- 結果レコードを順に並べます。
- 結果にページングを適用します。