17.00 - 17.05 - Teradata内のテーブルの作成 - Advanced SQL Engine - Teradata Database

Teradata Vantage™ - データベースの管理

Product
Advanced SQL Engine
Teradata Database
Release Number
17.00
17.05
Release Date
2020年6月
Content Type
管理
Publication ID
B035-1093-170K-JPN
Language
日本語 (日本)

以下の手順ではBTEQを使用してテーブルを作成する方法を説明しますが、Teradata Studioを使用することもできます。

  1. BTEQを使用してユーザーDBADMINでVantageにログインします。
  2. CREATE TABLE文で1つ以上のテーブルを作成します。例えば、次のようになります。
    CREATE SET TABLE  database_name.table_name,
       (column_name   data_type,
        column_name   data_type,
        column_name   data_type)
    UNIQUE PRIMARY INDEX (primary_index_column);

    説明:

    構文要素 説明
    MULTISET

    SET

    MULTISETテーブルでは、ANSI/ISO SQL 2011規格に従って重複行が許可されています。SETテーブルでは重複行が許可されません。

    テーブル定義内の任意の列または列セットに固有性制約がある場合は、そのテーブルがMULTISETテーブルとして宣言されていたとしても重複行を持つことはできません。

    database_name テーブルが作成されるデータベースが現在のデータベースではない場合の作成先のデータベースの名前。

    推奨事項:このデータベースは、Tables_Databaseであるか、またはTables_Database内に配置されるデータベースでなければなりません。データベース作成についてを参照してください。

    database_nameが指定されないと、システムはテーブルを現行セッションのデフォルト データベース内に作成します。

    table_name 作成されるテーブルの名前。
    [NO] FALLBACK この要素を指定すると、システムが、このテーブルのすべての行について現行のイメージの複製コピーを自動的に作成し、障害が発生した場合にバックアップを提供するようになります。
    フォールバック用に最適化されたプラットフォームでは、NO FALLBACKのオプションとNO FALLBACKのデフォルトは使用できません。
    column_name 1つ以上の列の名前を、列とその属性がテーブルに定義されている順序で指定します。

    1つのテーブルに最大2,048の列を定義できます。列の限度に達する前に、他の制限または機能上の制限が適用される可能性があることに注意してください。例えば、テーブルごとに32を超えるラージ オブジェクト(LOB)列を格納することはできません。

    data_type 各列に単一のデータ型を指定します。

    Teradataと他のデータベースで名前の異なるデータ型があります。詳細については、<Teradata Vantage™ - データ タイプおよびリテラル、B035-1143>を参照してください。

    [UNIQUE|NO] PRIMARY INDEX プライマリ インデックスを指定します。1つのテーブルに複数のプライマリ インデックスを指定することはできません。プライマリ インデックスを明示的に割り当てないと、Vantageはデフォルトのプライマリ インデックスを選択します(ただし、NO PRIMARY INDEXを指定する場合を除く)。

    推奨事項: PRIMARY INDEX、UNIQUE PRIMARY INDEX、またはNO PRIMARY INDEXのいずれかを明示的に定義してください。Vantageが選択するデフォルト指定は、必ずしもそのテーブルにとって最適な指定であるとは限らないためです。

    primary_index_column プライマリ インデックスを定義する列を指定します。複数の列を指定する場合は、各列の複合値でインデックスが作成されます。最大64列まで指定できます。

    推奨事項:第一に固有な値を持ち、アクセスされる頻度が高く、変化しない値を持つ列を選択してください。プライマリ インデックス列を選択する際の指針を参照してください。

    例は、テーブルを作成するための推奨指定としては最低限のものです。追加のオプションを指定することや、追加のオプションを後でALTER TABLE文を使用して追加することができます。<Teradata Vantage™ - SQLデータ定義言語-構文規則および例、B035-1144>を参照してください。

    BTEQスクリプトを使用してデータ テーブルの作成を自動化する場合は、BTEQスクリプトによるデータベース オブジェクトの作成を参照してください。

  3. テーブルに権限を設定して、指定された管理ユーザーのみがテーブルに直接アクセスできるようにします。
  4. 新規に作成した空のテーブルに関する統計を収集します。これによって、PPIテーブルの列、インデックス、およびパーティションが定義され、同時に後で統計とデモグラフィックの収集を行なうためのデータ構造も定義されます。

テーブル レベルおよび列レベルのオプション要素

以下は一般的なテーブル レベルのオプション要素です。これらの要素は、CREATE/ALTER TABLE文に指定できます。これらテーブル オプションの詳細と、すべてのテーブル オプションの詳細については、<Teradata Vantage™ - SQLデータ定義言語-構文規則および例、B035-1144>を参照してください。

構文要素 説明
GLOBAL TEMPORARY グローバル一時テーブルを作成します。グローバル一時テーブルは、定義には持続性がありますが、内容にはセッション間で持続性がありません。各ユーザー セッションでは、一度に2,000までグローバル一時テーブルを実体化できます。

グローバル一時テーブルを使用するためには、ユーザーやプロファイルを作成または変更して、一時領域の制限を設定します。これには、TEMPORARY = n BYTESオプションを使用します。

一時領域の制限がプロファイルに対して定義されないと、Advanced SQL Engineは個々のユーザー作成者用に定義された一時領域の制限を使用します。ユーザー用の一時領域が定義されないと、そのユーザーが参照している実体化された任意のグローバル一時テーブルに割り当てられた領域が、その直接所有者に割り当てられた一時領域の最大値として設定されます。

JOURNAL テーブルの永久ジャーナル(PJ)を指定します。これは、INSERT、UPDATE、またはDELETE文を使用して変更された各データ行のイメージを保管します。PJイメージは、変更の前、変更の後、またはその両方の行の値を反映するように設定できます。

データベース内のすべてのテーブルにPJを指定するためには、CREATE DATABASE文でJOURNAL句を使用します。

推奨事項:データ保護の必要性を分析した結果、さらにデータ保護レベルを追加する必要のあるテーブルに対してはジャーナリングを指定してください。

FREESPACE ロード操作の間、シリンダ上に残す空き領域の割合を指定します。予約された空き領域によって、テーブルは現在割り当てられているシリンダ内で拡張できます。 これにより、さらにシリンダを割り当てる必要性と、それによって生じるデータを新規シリンダに移行するオーバーヘッドを回避、または後に回すことができます。 シリンダの新たな割り当てを回避することでシステム全体のパフォーマンスが向上します。この領域は、グローバル レベルとテーブル レベルで制御できます。

推奨事項: テーブルの拡張がほとんどないか、またはまったくない(テーブルが読み取り専用である)場合は、FREESPACEを0に設定します。それ以外の場合は、テーブルの増大率(INSERTマイナスDELETE)を反映するパーセンテージを選択します。通常は、5~15%に設定します。許容される最大値は75%です。

DATABLOCKSIZE 複数行を含むブロックの最大データ ブロック サイズを指定します。ブロック サイズが大きい場合は、1回の入出力で多くの行が選択されることになるので、フル テーブル スキャンを実行するときに好都合です。逆に、小さなブロック サイズの場合は、不必要な行を抽出しなくても済むので、トランザクション指向のテーブルに適しています。データ ブロック サイズはグローバル レベルとテーブル レベルで制御できます。

推奨事項:データベースが主に戦略的な作業(意思決定支援/複雑な問合わせ)に使用される場合は、より大きい値を設定します。データベースが主に戦術的な作業(OLTP)に使用される場合は、より小さい値を使用します。

[UNIQUE] INDEX テーブルのセカンダリ インデックスを指定します。セカンダリ インデックス(SI)は、プライマリ インデックスよりも使用頻度の低い代替パスを使って、テーブル データに迅速にアクセスできるようにします。SIはフル テーブル スキャンを回避することによってパフォーマンスを向上させます。
PARTITION BY プライマリ インデックスが指定したパーティション式の値に基づいてパーティション化されるように指定します。パーティション プライマリ インデックス(PPI)を使用すると、行をユーザー定義のデータ パーティションに割り当てることができるため、範囲問合わせのパフォーマンスが強化され、同時に効率的なPI結合戦略が実現されます。行パーティション化を参照してください。

以下は一般的な列レベルのオプション要素です。これらの要素は、CREATE/ALTER TABLE文に指定できます。これら列レベルのオプションの詳細と、すべてのテーブル オプションに関する詳細については、<Teradata Vantage™ - SQLデータ定義言語-構文規則および例、B035-1144>を参照してください。

構文要素 説明
data_type_attributes 列の属性を指定する場合は、属性を定義する前にそのデータ型を定義しなければなりません。以下のような属性がサポートされています。
  • NOT NULL
  • UPPERCASE
  • [NOT] CASESPECIFIC
  • FORMAT
  • TITLE
  • NAMED
  • DEFAULTまたはWITH DEFAULT
  • CHARACTER SET
  • WITH TIME ZONE

推奨事項:絶対にnullになることがない列に対しては、NOT NULL属性を指定することを強くお勧めします。

COMPRESS 圧縮して領域をゼロにする列内の固有値セットを指定します。列を圧縮することによってストレージ容量が拡張され、テーブル スキャンの応答時間が向上し、ディスク入出力トラフィックが削減されます。

推奨事項:最適な結果を得るためには、以下のような場合に複数値圧縮を使用します。

  • 圧縮フィールド内に圧縮可能値(null、ゼロ、空白、または定数値)を含む行が、採算点を超えるのに十分な数だけ存在する。
  • 行サイズが縮小されることにより、1つ以上のデータ ブロックが排除されている。
CONSTRAINT 列レベルの制約を指定します。以下のような制約がサポートされています。
  • UNIQUE
  • PRIMARY KEY
  • FOREIGN KEY
  • CHECK
  • REFERENCES

推奨事項:制約の仕様を示す名前を指定します。

CREATE TABLE文の例

このテーブル定義はEmployeeテーブルをデータベース名Tables_Database内に作成します。

CREATE SET TABLE Tables_Database.Employee, 
   (Associate_Id     INTEGER,
    Associate_Name   CHAR(25),
    Salary           DECIMAL(8,2),
    DOB              DATE,
    Job_Title        VARCHAR(25),
    Dept_No          SMALLINT,
    Marital_Status   CHAR,
    No_Of_Dependents BYTEINT)
UNIQUE PRIMARY INDEX (Associate_Id);

BTEQスクリプトの使用については、BTEQスクリプトによるデータベース オブジェクトの作成を参照してください。

参照情報

トピック 詳細に関するリソース
テーブルの概要(グローバル一時テーブルと揮発テーブルを含む) Teradata Vantage™ - SQLの基本、B035-1141
以下の文の構文、オプション、および必要な権限:
  • CREATE TABLE
  • ALTER TABLE
  • DROP TABLE
  • RENAME TABLE
Teradata Vantage™ - SQLデータ定義言語-構文規則および例、B035-1144
デフォルトのデータベース Teradata Vantage™ - SQLの基本、B035-1141
データ型とデータ型の属性 Teradata Vantage™ - データ タイプおよびリテラル、B035-1143
  • プライマリ インデックス
  • パーティション プライマリ インデックス
  • セカンダリ インデックス
  • 結合インデックス(マテリアライズド ビュー)
プライマリ インデックスの選択
FREESPACEオプションによるパフォーマンスの管理とFREESPACE値の計算指針 < Teradata Vantage™ - SQLデータ定義言語-構文規則および例、B035-1144>の「FREESPACEテーブル オプション」と< Teradata Vantage™ - データベース ユーティリティ、B035-1102>の「“FreeSpacePercent” DBS 制御フィールド」
DATABLOCKSIZEオプションによるパフォーマンスの管理とDataBlockSize値の指定 <Teradata Vantage™ - SQLデータ定義言語-構文規則および例、B035-1144>のDATABLOCKSIZEテーブル オプションと<Teradata Vantage™ - データベース ユーティリティ、B035-1102>の「“DataBlockSize”DBSコントロール コントロールフィールド」
列値の圧縮 Teradata Vantage™ - データベースの設計、B035-1094
列レベルとテーブル レベルの制約 Teradata Vantage™ - データベースの設計、B035-1094