ホームページ  >  記事  >  データベース  >  SQLの実行順序は何ですか?

SQLの実行順序は何ですか?

silencement
silencementオリジナル
2019-06-10 10:36:3429278ブラウズ

SQLの実行順序は何ですか?

#SQL ステートメントの実行シーケンス

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

# クエリ処理の各段階を詳しく分析しましょう

FORM: 左側のテーブルと右側のテーブルについてFROM Table のデカルト積を計算します。仮想テーブル VT1

ON の生成: 仮想テーブル VT1 に対して ON フィルタリングを実行し、 を満たす行のみが仮想テーブル VT2 に記録されます。

JOIN: OUTER JOIN (左結合、右結合など) が指定されている場合、保持表内の一致しない行が仮想表 VT2 に外部行として追加され、仮想表 VT3 が作成されます。 from sub- 文に 3 つ以上のテーブルが含まれている場合は、すべてのテーブルが処理されるまで、前の結合接続によって生成された結果 VT3 と次のテーブルに対してステップ 1 ~ 3 が繰り返されます

WHERE: WHERE 条件を実行します仮想テーブル VT3 でのフィルタリング。 を満たすレコードのみが仮想テーブル VT4 に挿入されます。

GROUP BY: group by 句の列に従って VT4 のレコードをグループ化し、VT5 を生成します。

CUBE | ROLLUP: テーブル VT5 に対してキューブまたはロールアップ操作を実行して、テーブル VT6 を生成します。

HAVING: 仮想テーブル VT6 に Having フィルターを適用します。 を満たすレコードのみが仮想テーブル VT7 に挿入されます。

SELECT: 選択操作を実行し、指定された列を選択して、仮想テーブル VT8 に挿入します。

DISTINCT: VT8 でレコードの重複を除去します。仮想テーブル VT9 を生成します。

ORDER BY: 仮想テーブル VT9 内のレコードを に従ってソートし、仮想テーブル VT10 を生成します。

LIMIT: 指定された行のレコードを取り出し、仮想テーブル VT11 を生成し、結果を返します。

書き込み順序

: select... from... where.... group by... getting... order by... limit [offset,] (行数)

実行順序

: from... where...group by... getting.... select... order by...limit

以上がSQLの実行順序は何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。