1

こんにちはTeradataの同僚!

本番環境でいくつかの変更を行う必要があります:1)既存の列を変更します2)いくつかの新しい列を追加します3)プライマリインデックスを削除して再作成します

誰かが1)の場合に私を助けることができます-圧縮部分を追加して列セグメントを変更します:

セグメントCHAR(10)CHARACTER SET LATIN NOT CASESPECIFIC COMPRESS('AM'、'CAM'、'KAM'、'KO'、'PSHC'、'RES'、'SBS')

この列を追加する方法:pot_klasse CHAR(1)CHARACTER SET LATIN NOT CASESPECIFIC COMPRESS('B'、'U')

新しいインデックスを作成する方法は?(最初にドロップしてから新しいものを作成する必要がありますか?)

4

1 に答える 1

3

注:この情報はすべて、ここからダウンロードできるTeradataマニュアルに記載されています。そこから、画面の右上で関心のあるリリースを選択できます。

既存の列に値リスト圧縮を追加する

テーブルが排他的にロックされることを許容できるテーブルのサイズと期間に応じて、を使用して値リストの圧縮を追加できますALTER TABLE。圧縮値リストのテーブルヘッダーに十分なプレゼンスビットがある場合、操作はかなり速くなる可能性があります。そうでない場合、かなり集中的になります。

ALTER TABLE MyDB.MyTable ADD SEGMENT CHAR(10) 
      COMPRESS ('AM', 'CAM', 'KAM', 'KO', 'PSHC', 'RES', 'SBS');

それ以外の場合は、値リストの圧縮が定義された新しいテーブルを作成し、統計を元の本番テーブルから新しいテーブルにコピーし、データを新しいテーブルに挿入してから、テーブルの名前を変更して新しいテーブルを本番として導入できます。テーブル。

既存のテーブルへの列の追加

テーブルヘッダーに未使用のプレゼンスビットがある場合、ALTER TABLEを使用してこの列を追加すると、かなり迅速な操作になります。圧縮された値リストをキャプチャするのに十分なプレゼンスビットがALTER TABLEない場合は、推奨されるアプローチではありません。

ALTER TABLE MyDB.MyTable ADD pot_klasse CHAR(1) 
      CHARACTER SET LATIN NOT CASESPECIFIC COMPRESS ('B','U');

プライマリインデックスの変更

場合によります。

を使用して新しいテーブルを作成しなくても、テーブルのPIを変更できる場合がありますALTER TABLE。(たとえば、非一意から一意)ただし、多くの場合、新しいテーブルを作成し、元のテーブルから新しいテーブルにデータを挿入する必要があります。(例:列の追加、プライマリインデックスの列のデータ型の変更など)

于 2012-08-09T13:58:01.603 に答える