GET_STATS_FOR_FIELDS¶
説明
ストアドプロシージャ GET_STATS_FOR_FIELDS は、JDBC 基本ビューのフィールドの統計 (各フィールドの最小値や最大値など) とビューの行数を収集 および 返します (保存はしません)。
これらの統計を取得するために、JDBC データベースのシステムテーブルにクエリするか、集約関数を含む SELECT クエリを実行します。
JDBC 基本ビューの統計を取得する前に、ソースデータベース (Oracle、IBM DB2 など) にこのテーブルの統計が存在することを確認してください。統計が存在しないか、古くなっている場合、正確な情報が収集されず、コストベースの最適化によって次善の実行プランが選択されない可能性があります。
構文
GET_STATS_FOR_FIELDS (
input_mode : text
, input_database_name : text
, input_view_name : text
, input_fields: array
, input_table_stats : boolean
, input_no_delegate : boolean
, input_return_queries : boolean
, input_save : boolean
)
input_mode: このプロシージャによる統計の収集方法を設定します。有効な値を以下に示します。SMART_ONLY: このプロシージャは、データベースのシステムテーブルから統計を収集します。SMART_THEN_ATSOURCE_THROUGH_VDP: このプロシージャは、データベースのシステムテーブルから統計を収集します。次に、SELECTステートメントを実行して、データベースのシステムテーブルから取得できない統計を収集します。ATSOURCE_THROUGH_VDP_ONLY: このプロシージャは、システムテーブルにクエリする代わりに、SELECTステートメントを実行します。SMART_CACHE_ONLY: このプロシージャは、VDP がビューをキャッシュするために使用しているデータベースのシステムテーブルから統計を収集します。SMART_CACHE_THEN_ATCACHE_THROUGH_VDP: このプロシージャは、VDP がビューをキャッシュするために使用しているデータベースのシステムテーブルから統計を収集します。その後、SELECTステートメントを実行して、キャッシュデータベースのシステムテーブルから取得できない統計を収集します。これらの集約クエリは、VDP がビューをキャッシュするために使用しているデータベースによって実行されます。ATCACHE_THROUGH_VDP_ONLY: このプロシージャは、システムテーブルにクエリする代わりに、SELECTステートメントを実行します。これらの集約クエリは、VDP がビューをキャッシュするために使用しているデータベースによって実行されます。
input_database_name:view_nameが属するデータベースの名前。nullの場合、プロシージャは現在のデータベースのinput_view_nameを検索します。input_view_name: このプロシージャは、このビュー (大文字/小文字が同じ) の統計を収集します。input_fields: 統計を収集する対象となるフィールドで構成されるレジスターの配列。各レジスターには以下の 3 つのフィールドがあります。field_name: フィールドの名前。stats: 収集する統計の配列。FIELD_COUNT_DISTINCT(個別の値)、FIELD_AVG_LEN(平均サイズ)、FIELD_MAX(最大値)、FIELD_MIN(最小値)、およびFIELD_NUM_NULLS(NULL 値) です。nullの場合、フィールドのすべての統計を収集します。source_stat_name: このビューの統計を保持しているデータベース内のオブジェクトの名前。Microsoft SQL Server などの一部のソースでは、同じフィールドまたは一連のフィールドから複数の統計を生成し、それらを異なるオブジェクトに格納できます。
nullの場合、このプロシージャはデフォルトのオブジェクトから統計を取得します。該当しない場合、この値は無視されます。
input_table_stats:trueの場合、このプロシージャはテーブルの行数を取得します。falseの場合は取得しません。input_no_delegate:trueの場合、このプロシージャは、SELECTステートメントを実行する際にどの集約関数もソースにプッシュダウンしません。falseの場合はプッシュダウンします。input_return_queries:trueの場合、このプロシージャはテーブルの統計を取得するために実行されたステートメントまたはクエリも返します。falseの場合は返しません。input_save:trueの場合、このプロシージャは収集したテーブルの統計を返す代わりに保存します。falseの場合、ストアドプロシージャは統計を返しますが、統計は保持されません。
例
例 1
CALL GET_STATS_FOR_FIELDS('SMART_ONLY'
, 'admin'
, 'internet_inc'
, {
ROW('iinc_id',NULL,NULL),
ROW('specific_field1',NULL,NULL),
ROW('taxid',NULL,NULL)
}
, true
, false
, false
, false);
このプロシージャは、ビュー internet_inc のフィールド iinc_id 、 specific_field1 、および taxid の統計を収集します。
そのために、データベースのシステムテーブルに対してのみクエリを実行します。
例 2
CALL GET_STATS_FOR_FIELDS('SMART_ONLY'
, 'admin'
, 'internet_inc'
, {
ROW('iinc_id',NULL,NULL),
ROW('specific_field1',NULL,NULL),
ROW('taxid',NULL,NULL)
}
, false
, false
, false
, false);
前の例と同じ操作を実行しますが、テーブルの行数は収集しません (最後のパラメータの値に注意してください)。
例 3
CALL GET_STATS_FOR_FIELDS('SMART_ONLY'
, 'admin'
, 'internet_inc'
, { ROW('summary',
{ ROW('FIELD_NUM_NULLS'),
ROW('FIELD_COUNT_DISTINCT'),
ROW('FIELD_AVG_LEN') }, NULL)}
, true
, false
, false
, false);
ビューの行数と、 summary フィールドの「NULL 値」、「個別の値」、および「平均サイズ」の統計を収集します。
SMART_ONLY パラメータがあるため、データベースのシステムテーブルに対してのみクエリを実行して統計を収集します。
例 4
CALL GET_STATS_FOR_FIELDS('SMART_ONLY'
, 'admin'
, 'internet_inc'
, {
ROW('iinc_id',NULL,NULL),
ROW('specific_field1',NULL,NULL),
ROW('taxid',NULL,NULL)
}
, true
, false
, false
, true);
ビュー internet_inc のフィールド iinc_id 、 specific_field1 、および taxid の統計を収集しますが、それらの値を返さずに保存します。
