次のテーブルに、行の消去で使用する最適なユーティリティを選択する際に参考にできる指針を示します。実験を通してより良い方法を見出せることを覚えておいてください。
タスク | 最初の選択 | 2番目の選択 |
---|---|---|
任意のテーブルから少ない行数を消去する | TPump | BTEQ |
大きなテーブルから多い行数を消去する | MultiLoad | BTEQ |
複数のテーブルの多い行数に対してDELETE操作を実行する | MultiLoad | TPump |
任意のテーブルから行をすべて消去する | BTEQ この場合、Teradataは、テーブルが空であることを示す標識を使用してテーブル ヘッダーにマークを付けます。この削除操作の要求時にテーブルがロックされていなければ、この削除操作は1~2秒で終了します。 |
|
任意のテーブルから数行を消去する | BTEQ 領域が許せば、空のテーブルを作成し、保持する行をこのテーブルに挿入し、オリジナルのテーブルを削除した後、この新規テーブルの名前をオリジナルのテーブルの名前に変更することができます。 | MultiLoad削除操作は、(全データではなく)大量のデータをテーブルから削除するのに適しています。 MultiLoadは、ブロックごとにデータを読み取ります。MLoadは、テーブルで使用されている各ブロックを処理、つまり必要に応じて行を消去しブロックを置き換えます。 この操作は非常に効率的です。またロールバック ロギングがないため、多くの場合、SQLによる消去操作より効率的です。ただし、MultiLoad処理が正常に終了しなかった場合、テーブルは不安定な状態に陥ります。このMultiLoadの効果を最も発揮させるには、セカンダリ インデックスを削除し、MultiLoad操作を実行した後、インデックスを置換します。この結果、処理が高速になり、作業テーブルが確実に小さくなります。 |
SQL MERGE文を使ってテーブルから行を消去することはできません。