SQL実行ステップの詳細な分析

SQL実行ステップの詳細な分析

SQL実行ステップの詳細な分析

まず、ステートメントが実行される順序を見てみましょう。

(8)選択する (9)Aを区別する (1)Taから (3)Tbに結合する 
(2) XXXについて (4) XXXの場合 (5) XXXでグループ化 (6) 
{立方体|ロールアップ} (7)XXXを持つ (10)XXXで順序付ける (11)XXXを制限する

次に、クエリ処理のさまざまな段階を見てみましょう。

  1. FROMはfrom句の左と右のテーブルに対してカルテシアンセットを実行し、仮想テーブルVT1を生成します。
  2. ONは仮想テーブルVT1でオンフィルタリングを実行し、結合条件を満たす行のみが仮想テーブルVT2に挿入されます。
  3. JOIN 外部結合が指定されている場合、保持されたテーブル内の一致しない行が仮想テーブル VT2 の外部行として追加され、仮想テーブル VT3 が生成されます。 from 句に 2 つ以上のテーブルが含まれている場合は、すべてのテーブルが処理されるまで、VT3 と、前の接続によって生成された結果テーブル内の次のテーブルに対して手順 1 ~ 3 を繰り返します。
  4. WHERE は仮想テーブル VT3 に対して where フィルターを実行し、条件を満たすものだけが仮想テーブル VT4 に挿入されます。
  5. GROUP BY は、group by 句の列に従って VT4 のレコードをグループ化し、VT5 を生成します。
  6. CUBE|ROLL UP テーブル VT5 に対して CUBE または ROLLUP 操作を実行して、テーブル VT6 を生成します。
  7. HAVINGは仮想テーブルVT6にHAVINGフィルタを適用し、条件を満たすレコードのみが仮想テーブルVT7に挿入されます。
  8. SELECT は 2 回目の選択操作を実行し、指定された列を選択して仮想テーブル VT8 に挿入します。
  9. DISTINCT は重複データを削除し、仮想テーブル VT9 を生成します。
  10. ORDER BY 指定された要件に従って仮想テーブルVT9のレコードをソートし、仮想テーブルVT10を生成します。
  11. LIMITは指定された行のレコードを取得し、仮想テーブルVT11を生成し、それをクエリユーザーに返します。

ご質問がありましたら、メッセージを残すか、コミュニティに参加して話し合いましょう。お読みいただきありがとうございます。お役に立てれば幸いです。このサイトをサポートしていただき、ありがとうございます。

以下もご興味があるかもしれません:
  • PHP を使用して複数のステートメントの mysqli バッチ実行を実装する方法の例
  • 非動的SQL Server SQLステートメントを使用して動的クエリを実行する
  • SQL SERVER で動的 SQL ステートメントを構築して実行する方法
  • Mybatis プラグイン: SQL の印刷とその実行時の実装方法
  • Mysql は、デッドロック問題を解決するために kill コマンドを使用します (実行中の特定の SQL ステートメントを強制終了します)。
  • MySQL サービス 1067 エラーの解決策: mysql 実行可能ファイルのパスを変更する
  • MySql バッチ挿入の最適化 SQL 実行効率の例の詳細な説明
  • Oracle 実行が最も遅く、クエリ時間が最長の SQL 文を表示する

<<:  CocosCreator 学習モジュールスクリプト

>>:  CocosCreatorで複数のタイマーを使用する方法の詳細な説明

推薦する

Vueは宮殿のグリッド回転抽選を実現します

Vueは宮殿グリッド回転抽選(CrossFireのxx転生に似ている)を実装しています。参考までに、...

MySQL の効率的なクエリの左結合とグループ化 (プラス インデックス)

mysql 効率的なクエリMySQL は、左結合の速度を上げるために group by を犠牲にし...

Vue3でelement-plusを使用する方法の詳細な説明

目次1. インストール2. main.jsにインポートする3. 使用Vue3がリリースされてからしば...

JavaScript を使用せずに HTML の a タグを無効にするには、純粋な CSS を使用します。

実際、この問題は、HTML の select タグを初めて学んだときにすでに発生していました。今日に...

ulとliの基本的な使用法の分析

ナビゲーション、少量のデータテーブル、中央揃え<!DOCTYPE html PUBLIC &q...

HTML タグ sup と sub の応用の紹介

HTML タグ: 上付き文字HTML では、<sup> タグは上付き文字のテキストを定義...

2012年のベストWebデザイン作品レビュー[パート1]

新年の初めに、友人の健康と2013年が素晴らしい年となることを心からお祈りいたします。この記事では、...

JSX を使用してカルーセル コンポーネントを実装する方法 (フロントエンドのコンポーネント化)

JSX を使用してコンポーネント システムを構築する前に、例を使用してコンポーネントの実装原理とロ...

Ckeditor + Ckfinderを使用したJavaScriptファイルアップロードケースの詳細な説明

目次1. 準備2. 減圧3. 統合を開始する1. 準備Ckeditor_4.5.7_full + C...

WeChat パブリック アカウントの録音ファイルを再生して保存します (amr ファイルを mp3 に変換)

目次オーディオトランスコーディングツール原理JAVE プロジェクトの問題このプロジェクトの特徴拡張機...

MySQLに必要な共通知識のまとめ

目次主キー制約一意の主キー非 Null 制約デフォルトの制約外部キー制約1NF 2NF 3NFデータ...

MySQL および Oracle のバッチ挿入 SQL の一般的な記述例

目次例えば:一般的な執筆:要約する例えば:次に、データベースのUSERテーブルにUserオブジェクト...

Keepalived は Nginx の負荷分散と高可用性のサンプル コードを実装します

第1章: keepalivedの紹介VRRP プロトコルの目的は、静的ルーティングの単一点障害問題を...

Struts2 ジャンプ後に CSS と JS が無効になる問題の解決策のアイデアと実装手順

struts2 アクションの実行後にジャンプした jsp が表示されると、css が機能しません。問...

Vue3 でサードパーティのコンポーネントライブラリをオンデマンドでロードする方法

序文Element Plus を例に、コンポーネントとスタイルのオンデマンド読み込みを構成します。環...