web-dev-qa-db-ja.com

クエリの解析とはどういう意味ですか?

ほとんどのリレーショナルデータベースは、4つのステップでJDBC/SQLクエリを処理します。

  1. 着信SQLクエリを解析する
  2. SQLクエリをコンパイルする
  3. データ収集経路を計画/最適化する
  4. 最適化されたクエリを実行する/データを取得して返す

「着信クエリを解析する」とはどういう意味ですか?また、「データ収集経路を計画/最適化する」とはどういう意味ですか?

8
user3239652

Parsingは、SQLステートメントの処理の1つの段階です。 アプリケーションがSQLステートメントを発行すると、アプリケーションはDatabaseへの解析呼び出しを行います。解析呼び出し中に、データベース:

  1. 文の構文的および意味的妥当性をチェックします。
  2. ステートメントを発行するプロセスがそれを実行する特権を持っているかどうかを判別します。
  3. ステートメントにプライベートSQL領域を割り当てます。
11
Tushar
  1. 解析とは、入力された文字を調べ、キーワードや識別子の文字を調べ、コメントを無視し、引用符で囲まれた部分を文字列定数として配置し、全体の構造をすべての意味を持つ言語構文に一致させることによって、コマンドまたはステートメントとして認識します。

  2. 計画/最適化とは、通常実行時間に関して、(考えられるすべての方法の中で)結果を決定するための最良の方法を見つけることを意味します。また、必要なロックの数を最小限に抑えることもできます。クエリの一部を無視できるかもしれません(where ... and 1 == 1)またはテーブルにアクセスする必要はまったくありません。

2
wallyk

解析はコンパイルのプロセスの1つです。

コンパイラのフェーズ:

enter image description here

出典: コンパイラのフェーズ

2
Ganesh_Devlekar

1)構文解析:SQL文法規則などに従ってクエリを構文解析し、クエリを基本部分形式に「トークン化」しようとします。

2)計画/最適化:その段階で、SQLエンジンはクエリを実行するための最良の方法を評価しようとします。既存のインデックス、クラスター、テーブルの関係を利用しようとします。全表スキャンを回避する方法を見つけ、データの繰り返し読み取りを回避することにより、キャッシュを効果的に利用します。

1
uncoder