MySQLステートメントの詳細な実行順序

 

MySQLステートメントは11ステップに分かれており、次の図に示すように、最初の操作は常にFROM操作であり、最後の操作はLIMIT操作です。これらの各操作により仮想テーブルが生成されます。この仮想テーブルは処理入力として使用されますが、これらの仮想テーブルはユーザーに対して透過的ですが、最後の仮想テーブルのみが結果として返されます。ステートメントで句が指定されていない場合、対応するステップはスキップされます

 

クエリ処理の各段階を具体的に分析してみましょう
1. FORM:FROMの左側のテーブルと右側のテーブルのデカルト積を計算します。仮想テーブルVT1を生成します
。2. ON:仮想テーブルVT1のONフィルター。<join-condition>を満たす行のみ
が仮想テーブルVT2に記録されます。
3. JOIN:OUTER JOIN(左結合、右結合など)が指定されている場合、予約されたテーブルの一致しない行が外部行として仮想テーブルVT2に追加され、仮想テーブルVT3、rug from句に2つが含まれます。複数のテーブルがある場合、すべてのテーブルが処理されるまで、前の結合接続の結果VT3と次のテーブルに対して、ステップ1〜3の3つのステップが繰り返されます。
4. WHERE:仮想テーブルVT3でWHERE条件フィルタリングを実行します。<where-condition>に一致するレコードのみが仮想テーブルVT4に挿入されます。
5. GROUP BY:group by句の列に従ってVT4のレコードをグループ化して、VT5を生成します。6.
CUBE | ROLLUP:テーブルVT5でキューブまたはロールアップ操作を実行して、テーブルVT6を生成します。7.
HAVING:はい仮想テーブルVT6にはフィルタリングが適用されており、<having-condition>に一致するレコードのみが仮想テーブルVT7に挿入されます。 

568の元の記事を公開 180の賞賛 180,000ビュー

おすすめ

転載: blog.csdn.net/Delicious_Life/article/details/105616621