DESCRIBE QUERY EXECUTION

4D - Documentation   French   English   German   Spanish   日本語   4D v11 SQLコマンドテーマリスト   4D v11 SQLインデックス   4D v11 SQL定数テーマリスト   戻る   前   次

version 11.1


DESCRIBE QUERY EXECUTION (status)

引数説明
statusブールTrue=内部クエリ分析を有効にする,
False=内部クエリ分析を無効にする

説明

DESCRIBE QUERY EXECUTION コマンドはカレントプロセスに説いて、クエリの分析を有効にしたり無効にしたりします。このコマンドは4DランゲージおよびSQLによるクエリ両方に影響します。

status 引数にTrueを設定してこのコマンドを呼び出すと、クエリ分析モードが有効になります。このモードでは、4Dエンジンはデータに対して行われるクエリごとに2つの情報を内部的に記録します:

・クエリが実行される直前の、クエリに関する詳細な説明。言い換えれば、実行しようとする計画 (クエリプラン)。

・実際に実行されたクエリの詳細な説明 (クエリパス)。

記録される情報はクエリのタイプ (インデックス付き, シーケンシャル)、見つけたレコード数、実行するクエリ条件ごとに必要な時間を含みます。これらの情報はGet Last Query PlanGet Last Query Pathコマンドで読みだすことができます。

通常、クエリプランの説明とクエリパスは同じです。しかしパフォーマンスを向上させるため、4Dはクエリ実行時に動的な最適化を行うことがあるため、これら2つが異なることもあります。例えば4Dエンジンがそのほうが早いと判断すれば、インデックス付きフィールドに対するクエリをシーケンシャルクエリに変更することがあります - これは特に検索対象のセレクションが少ないときに発生します。

status 引数にFalseを渡すとクエリの分析を停止します。クエリ分析モードはアプリケーションを遅くします。

例題

以下の例題は、SQLクエリのケースで、これらのコマンドを使用して取得できる情報のタイプを示します:

   DESCRIBE QUERY EXECUTION(True) `分析モード有効
   ARRAY TEXT(aTitles;0)
   ARRAY TEXT(aDirectors;0)
   Begin SQL
      SELECT CONCAT(CONCAT(ACTORS.FirstName,' '),ACTORS.LastName),CITIES.City_Name
         FROM ACTORS, CITIES
         WHERE ACTORS.Birth_City_ID=CITIES.City_ID
         ORDER BY 2,1
         INTO :aTitles, :aDirectors;
   End SQL
   vResultPlan:=Get Last Query Plan(Description in Text Format)
   vResultPath:=Get Last Query Path(Description in Text Format)
   DESCRIBE QUERY EXECUTION(False)  `分析モード終了

このコード実行後、vResultPlanvResultPathには実行されたクエリの定義が返されます:

vResultPlan: 
   [Join] : ACTORS.Birth_City_ID = CITIES.City_ID
vResultPath: 
   And
      [Merge] : ACTORS with CITIES
         [Join] : ACTORS.Birth_City_ID = CITIES.City_ID  (227 records found in 0 ms)
      --> 227 records found in 0 ms
   --> 227 records found in 0 ms

参照

Get Last Query Path, Get Last Query Plan.


4D - Documentation   French   English   German   Spanish   日本語   4D v11 SQLコマンドテーマリスト   4D v11 SQLインデックス   4D v11 SQL定数テーマリスト   戻る   前   次