4D v12.4

DESCRIBE QUERY EXECUTION

ホーム

 
4D v12.4
DESCRIBE QUERY EXECUTION

 

DESCRIBE QUERY EXECUTION 


 

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

説明   

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

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

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

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

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

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

例題  

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

 C_TEXT($vResultPlan;$vResultPath)
 ARRAY TEXT(aTitles;0)
 ARRAY TEXT(aDirectors;0)
 DESCRIBE QUERY EXECUTION(True`analysis mode
 Begin SQL
    SELECT ACTORS.FirstName, CITIES.City_Name
    FROM ACTORS, CITIES
    WHERE ACTORS.Birth_City_ID=CITIES.City_ID
    ORDER BY 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`End analysis mode

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

$vResultPlan:
   [Join] : ACTORS.Birth_City_ID = CITIES.City_ID
$vResultPath:
   And
      [Merge] : ACTORS with CITIES
         [Join] : ACTORS.Birth_City_ID = CITIES.City_ID (1227 records found in 13 ms)
      --> 1227 records found in 13 ms
   --> 1227 records found in 14 ms

Description in XML format 定数がGet Last Query Pathコマンドに渡されると、$vResultPath にはXMLで表現された定義が返されます:

$vResultPath:

   <QueryExecution>
      <steps description="And" time="0" recordsfounds="1227">
         <steps description="[Merge] : ACTORS with CITIES" time="13" recordsfounds="1227">
            <steps description="[Join] : ACTORS.Birth_City_ID =CITIES.City_ID" time="13" recordsfounds="1227"/>
         </steps>
      </steps>
   </QueryExecution>



 
プロパティ 

プロダクト: 4D
テーマ: クエリ
番号: 1044

 
履歴 

初出: 4D v11 SQL Release 1

 
参照 

Get Last Query Path
Get Last Query Plan