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_idspecific_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_idspecific_field1 、および taxid の統計を収集しますが、それらの値を返さずに保存します。