ホームページ > データベース > mysql チュートリアル > SQL における TRUNCATE と DELETE: 主な違いは何ですか?

SQL における TRUNCATE と DELETE: 主な違いは何ですか?

Linda Hamilton
リリース: 2025-01-15 09:17:44
オリジナル
150 人が閲覧しました

TRUNCATE vs. DELETE in SQL: What are the Key Differences?

SQL の TRUNCATE と DELETE の違いを深く理解する

SQL の TRUNCATE と DELETE コマンドはどちらもテーブル内のデータを削除するために使用されますが、通常、TRUNCATE の方がより高速かつ完全なデータ削除方法を提供します。

ステートメントの種類

DML (データ操作言語) である DELETE とは異なり、TRUNCATE は DDL (データ定義言語) に属します。

コミットとロールバック

コマンドのロールバック機能はデータベースによって異なります:

  • SQL Server と PostgreSQL: どちらも TRUNCATE のロールバックを許可します。
  • Oracle: DDL 操作としての TRUNCATE には 2 つのコミットが含まれるため、元に戻すことはできません。ただし、Oracle のフラッシュバック機能を使用すると、この問題を部分的に軽減できます。

宇宙リサイクル

DELETE は空き領域を残しますが、TRUNCATE は空き領域を再利用します。 Oracle の REUSE STORAGE オプションを使用すると、データ セグメントを保存できるため、テーブルを再ロードする際の効率が向上します。

行範囲

DELETE では行を選択的に削除できますが、TRUNCATE ではすべての行が無条件に削除されます。 Oracle では、パーティション化されたテーブル内の特定のパーティションを切り捨てることができます。

オブジェクトタイプ

DELETE はテーブルおよびクラスター化テーブルに対して機能しますが、TRUNCATE はテーブルまたはクラスター全体 (Oracle 固有) に限定されます。

データオブジェクト識別子

Oracle では、テーブルの作成後に挿入操作が発生していない限り、DELETE はデータ オブジェクト ID を保持しますが、TRUNCATE は新しい ID を割り当てます。

フラッシュバック (オラクル)

DELETE はフラッシュバック機能をサポートしますが、FLASHBACK ARCHIVE 機能が使用されない限り、TRUNCATE はフラッシュバック機能をブロックします。

権限

DELETE 権限はユーザーに付与できますが、TRUNCATE には DROP ANY TABLE 権限 (Oracle 固有) が必要です。

パフォーマンスノート

  • やり直し/元に戻す: DELETE は大量の元に戻すデータを生成しますが、TRUNCATE はごくわずかなスペースを消費します。
  • インデックス: TRUNCATE は無効なインデックスを復元します (Oracle 固有)。
  • 外部キー: 外部キーがテーブルを参照する場合、TRUNCATE は禁止され、DELETE の動作は設定によって異なります。
  • テーブルのロック: TRUNCATE には排他ロック (Oracle 固有) が必要ですが、DELETE には共有ロックが優先されます。

トリガーとリモート実行

TRUNCATE は DDL トリガーをサポートします (Oracle 固有)。 Oracle では、リモート TRUNCATE の実行は許可されていません。

ID 列

SQL Server では、TRUNCATE は ID 列シーケンスをリセットしますが、DELETE はリセットしません。

結果セット

Oracle PL/SQL では、DELETE ステートメントは削除された行をクライアントに返すことができます。

以上がSQL における TRUNCATE と DELETE: 主な違いは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート