以下の手順ではBTEQを使用してテーブルを作成する方法を説明しますが、Teradata Studioを使用することもできます。
- BTEQを使用してユーザーDBADMINでVantageにログインします。
- 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テーブルでは重複行が許可されません。
- database_name
- テーブルが作成されるデータベースが現在のデータベースではない場合の作成先のデータベースの名前。
- table_name
- 作成されるテーブルの名前。
- [NO] FALLBACK
- この要素を指定すると、システムが、このテーブルのすべての行について現行のイメージの複製コピーを自動的に作成し、障害が発生した場合にバックアップを提供するようになります。
- column_name
- 1つ以上の列の名前、この順序でそれらとその属性がテーブルに対して定義されます。
- data_type
- 各列に単一のデータ型を指定します。
- [UNIQUE|NO] PRIMARY INDEX
- プライマリ インデックスを指定します。1つのテーブルに複数のプライマリ インデックスを指定することはできません。プライマリ インデックスを明示的に割り当てないと、Vantageはデフォルトのプライマリ インデックスを選択します(ただし、NO PRIMARY INDEXを指定する場合を除く)。
- primary_index_column
- プライマリ インデックスを定義する列を指定します。複数の列を指定する場合は、各列の複合値でインデックスが作成されます。最大64列まで指定できます。
例は、テーブルを作成するための推奨指定としては最低限のものです。追加のオプションを指定することや、追加のオプションを後でALTER TABLE文を使用して追加することができます。<Teradata Vantage™ - SQLデータ定義言語-構文規則および例、B035-1144>を参照してください。BTEQスクリプトを使用してデータ テーブルの作成を自動化する場合は、BTEQスクリプトによるデータベース オブジェクトの作成を参照してください。
- テーブルに権限を設定して、指定された管理ユーザーのみがテーブルに直接アクセスできるようにします。
- 新規に作成した空のテーブルに関する統計を収集します。これによって、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 | 列の属性を指定する場合は、属性を定義する前にそのデータ型を定義しなければなりません。以下のような属性がサポートされています。
推奨事項:絶対にnullになることがない列に対しては、NOT NULL属性を指定することを強くお勧めします。 |
COMPRESS | 圧縮して領域をゼロにする列内の固有値セットを指定します。列を圧縮することによってストレージ容量が拡張され、テーブル スキャンの応答時間が向上し、ディスク入出力トラフィックが削減されます。 推奨事項:最適な結果を得るためには、以下のような場合に複数値圧縮を使用します。
|
CONSTRAINT | 列レベルの制約を指定します。以下のような制約がサポートされています。
推奨事項:制約の仕様を示す名前を指定します。 |
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 |
以下の文の構文、オプション、および必要な権限:
|
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 |