0

多数のファイルを含むテーブルのすべての行を削除する必要があります。単純DELETE FROMに実行すると、膨大な数の行とファイルのサイズのために、多かれ少なかれコンピューターがロックされます。コンピューターをロックせずにこのタスクを実行する SQL スクリプトを作成しようとしていますが、誰かがこれを正しい方向に向けることができますか?

前もって感謝します。

4

1 に答える 1

1

試してみましたかTRUNCATE- これによりすべてが削除されます。

TRUNCATE TABLE yourTable

MSDNから

TRUNCATE TABLE は、WHERE 句のない DELETE ステートメントに似ています。ただし、TRUNCATE TABLE の方が高速であり、使用するシステムおよびトランザクション ログ リソースが少なくなります。

DELETE ステートメントと比較して、TRUNCATE TABLE には次の利点があります。

使用されるトランザクション ログ スペースが少なくなります。

DELETE ステートメントは、行を 1 つずつ削除し、削除された行ごとにトランザクション ログにエントリを記録します。TRUNCATE TABLE は、テーブル データの格納に使用されたデータ ページの割り当てを解除することによってデータを削除し、ページの割り当て解除のみをトランザクション ログに記録します。

通常は、より少ないロックが使用されます。

行ロックを使用して DELETE ステートメントを実行すると、テーブル内の各行が削除のためにロックされます。TRUNCATE TABLE は常にテーブルとページをロックしますが、各行はロックしません。

例外なく、テーブルにゼロ ページが残ります。

DELETE ステートメントの実行後も、テーブルには空のページが含まれている可能性があります。たとえば、ヒープ内の空のページは、少なくとも排他的 (LCK_M_X) テーブル ロックなしでは割り当て解除できません。削除操作でテーブル ロックを使用しない場合、テーブル (ヒープ) には多くの空のページが含まれます。インデックスの場合、削除操作によって空のページが残ることがありますが、これらのページはバックグラウンドのクリーンアップ プロセスによってすぐに割り当て解除されます。

于 2012-08-15T20:11:58.420 に答える