GENERATE_STATS_FOR_FIELDS

説明

ストアドプロシージャ GENERATE_STATS_FOR_FIELDS は、ビューのフィールドの統計 (各フィールドの最小値、最大値など) とビューの行数を収集 および 格納します。このプロシージャは、 GENERATE_STATS プロシージャ (「 GENERATE_STATS 」を参照) と同様に動作しますが、指定したフィールドの統計のみを収集するところが異なります。

可能な場合は、 GENERATE_SMART_STATS_FOR_FIELDS プロシージャを使用してください。このプロシージャは、通常の SELECT ステートメントを実行する代わりに、データベースのシステムテーブルに対してクエリを実行してこれらの統計を取得することができます。

構文

GENERATE_STATS_FOR_FIELDS(
      viewname : text,
    , fields : array
    , databasename : text
)
  • viewname: このプロシージャは、この名前 (大文字/小文字が同じ) のビューの統計を収集します。

  • fields: このプロシージャが統計を取得する対象となるフィールド名の配列。ビューの一部のフィールドのみを指定した場合、すでに収集されたビューの他のフィールドの統計は削除されません。

    null の場合、このプロシージャはビューのすべてのフィールドの統計を収集します。

    空の配列 ({}) の場合、このプロシージャはビューの行数を収集しますが、フィールドの統計は取得しません。

  • databasename: viewname が属するデータベースの名前。

    null の場合、プロシージャは現在のデータベースの viewname を検索します。

必要な権限

このプロシージャを実行できるのは、ビューに対する Write 権限を持っているユーザーのみです。つまり、以下のユーザーはこのプロシージャを実行できます。

  • 管理者またはこのデータベースの管理者。

  • このデータベースに対する Connect 権限と Write 権限を持っているユーザー。

  • このデータベースに対する Connect 権限とこのビューに対する Write 権限を持っているユーザー。

例 1

SELECT *
FROM GENERATE_STATS_FOR_FIELDS()
WHERE databasename = 'customer360_db'
    AND viewname = 'top_customer_by_region'
        AND fields = { ROW('region'), ROW('customer_id'), ROW('amount') };

このステートメントは、ビュー top_customer_by_region のフィールド regioncustomer_id 、および amount の統計を収集および格納します。

パラメーター fields は配列であるため、 { ROW(...), ROW(...),...} 構造体を使用してフィールド名の配列を定義する必要があります。この構造体の詳細については、「 複合値を使用した条件 」を参照してください。

例 2

SELECT *
FROM GENERATE_STATS_FOR_FIELDS()
WHERE databasename = 'customer360_db'
    AND viewname = 'top_customer_by_region'
    AND fields = {}

このステートメントは、ビューの行数を収集および格納しますが、ビューのフィールドの統計は取得しません。以前ビューの統計を取得したが、フィールドの統計に変更がない場合、このステートメントは行数のみを更新します。