0

Azure SQLスペースが不足している数千万行の DB テーブルがあります。コンテンツの一部を削除するという選択がなされ、私はこのスクリプトを書く任務を負っています。

私が選択したプロセスは、保持したいデータ (比較的少量ですが、それでも数百行) をメイン テーブルである一時テーブルにコピーし、truncate一時テーブルの内容をメイン テーブルに再挿入することです。テーブル。

このようなもの:

SELECT * INTO tmp FROM source

TRUNCATE TABLE source

INSERT INTO source (<fields>) SELECT <fields> FROM tmp

sourceただし、テーブルに挿入されたデータが失われないようにする必要がありますSELECT * INTO

データが失われないようにするために使用できるプロセスはありますか?

最新の主キーを変数に保存し、SELECT * INTOそれよりも高い主キーを持つ行のみを取得して、別の変数を使用することを検討しました。これにより、コピーが高速になると思います。この仮定は正しいですか?

もう 1 つのオプションは、単純にスクリプトを手動で実行することです。これは、ゆっくりと、しかし確実に、DELETEs必要のない行だけを実行します。行が削除されるとこのプロセスは高速化されますが、これを高速化する方法は思いつきません。

4

0 に答える 0