MYSQL での Truncate の使用法の詳細な説明

MYSQL での Truncate の使用法の詳細な説明

この記事のガイド: テーブル内のデータを削除するには、削除と切り捨ての 2 つの方法があります。TRUNCATE TABLE は、1 行の削除を記録せずにテーブル内のすべての行を削除するために使用されます。 TRUNCATE TABLE は、WHERE 句のない DELETE ステートメントに似ていますが、TRUNCATE TABLE の方が高速で、使用するシステム リソースとトランザクション ログ リソースが少なくなります。以下はSQLにおけるTruncateの使い方について説明しています。

テーブルが不要になった場合は drop を使用します。テーブルを保持しながらすべてのレコードを削除する場合は truncate を使用します。一部のレコードを削除する場合 (常に WHERE 句を使用) は delete を使用します。

Truncate は、テーブル内のすべてのデータをすばやくクリアできる SQL 構文です。また、カウントをゼロにリセットし、自動的に増分された値でフィールドを再計算することもできます。

1. 構文を切り捨てる

[ { データベース名.[ スキーマ名 ]. | スキーマ名. } ]
  テーブル名
[; ]

パラメータ

データベース名
データベースの名前。

スキーマ名
テーブルが属するスキーマの名前。

テーブル名
切り捨てられるテーブルの名前、または行が削除されるテーブルの名前。

2. Truncateの使用上の注意

1. TRUNCATE TABLE は、WHERE 句のない DELETE ステートメントと機能的に同じです。どちらもテーブル内のすべての行を削除します。ただし、TRUNCATE TABLE は DELETE よりも高速で、使用するシステム リソースとトランザクション ログ リソースが少なくなります。

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

3. TRUNCATE TABLE はテーブル内のすべての行を削除しますが、テーブル構造とその列、制約、インデックスなどは変更されません。新しい行を識別するために使用されるカウント値は、列のシードにリセットされます。 ID カウント値を保持する場合は、代わりに DELETE を使用します。テーブル定義とそのデータを削除する場合は、DROP TABLE ステートメントを使用します。

4. FOREIGN KEY 制約によって参照されるテーブルの場合、TRUNCATE TABLE は使用できません。代わりに、WHERE 句のない DELETE ステートメントを使用する必要があります。 TRUNCATE TABLE はログに記録されないため、トリガーをアクティブ化できません。

5. TRUNCATE TABLE は、インデックス ビューに参加しているテーブルには使用できません。

6. TRUNCATE TABLE を使用して削除されたテーブルにデータを追加する場合は、UPDATE STATISTICS を使用してインデックス情報を維持します。

7. ROLLBACK ステートメントがある場合、DELETE 操作は元に戻されますが、TRUNCATE は元に戻されません。

3. TRUNCATE TABLEは次のテーブルでは使用できません

1. FOREIGN KEY 制約によって参照されるテーブル。 (自分自身を参照する外部キーを持つテーブルを切り捨てることができます。)

2. インデックス ビューに参加するテーブル。

3. トランザクション レプリケーションまたはマージ レプリケーションを使用して公開されたテーブル。

4. 上記の特性の 1 つ以上を持つテーブルの場合は、DELETE ステートメントを使用します。

5. TRUNCATE TABLE 操作では個々の行の削除が記録されないため、トリガーをアクティブ化できません。

IV. TRUNCATE、Drop、Deleteの違い

1. Drop と Delete では、テーブルのデータ (定義) のみが削除されます。Drop ステートメントでは、テーブル構造、依存制約、トリガー、およびインデックスが削除されます。テーブルに依存するストアド プロシージャ/関数は保持されますが、無効になります。
2. 削除ステートメントは DML 言語です。この操作はロールバック セグメントに配置され、トランザクションがコミットされた後にのみ有効になります。対応するトリガーがある場合は、実行時にトリガーされます。切り捨てと削除は DDL 言語です。これらは操作後すぐに有効になります。元のデータはロールバックの対象にならず、ロールバックできません。この操作によってトリガーはトリガーされません。

3. 削除ステートメントはテーブルが占有する範囲に影響を与えず、高水準点は元の位置に残ります。 drop ステートメントは、テーブルによって占有されているすべてのスペースを解放します。デフォルトでは、再利用ストレージが使用されない限り、truncate ステートメントは minexents の範囲までスペースを解放します。切り捨ては最高水準点をリセットします(最初に戻ります)。

4. 効率: 削除 > 切り捨て > 削除

5. セキュリティ: 特にバックアップがない場合は、drop と truncate を慎重に使用してください。一部のデータを削除する場合は、where 句を指定した delete を使用できます。ロールバック セグメントは十分な大きさである必要があります。テーブルを削除する場合は、drop を使用できます。テーブルを保持したままテーブル内のすべてのデータを削除したい場合は、トランザクションに関連しない場合は truncate を使用できます。トランザクションに関連している場合やトリガーをトリガーする場合は、delete を使用します。テーブル内のフラグメントを整理する場合は、truncate の後に reuse stroage を使用し、データを再インポートして挿入します。

6.delete は DML ステートメントであり、自動的には送信されません。 Drop/truncate はどちらも DDL ステートメントであり、実行後に自動的にコミットされます。

7. Drop は通常、テーブル、スキーマ、インデックス、ビュー、整合性制約などのデータ全体を削除するために使用されます。delete は、テーブル内のタプルなどのローカル データを削除するために使用されます。

8. DROPはテーブル構造を削除します。DELETEはデータのみをクリアします。

9. テーブルが不要になった場合は drop を使用します。テーブルを保持したまますべてのレコードを削除する場合は truncate を使用します。一部のレコードを削除する場合 (常に WHERE 句を使用) は delete を使用します。

MYSQL での Truncate の詳細な使用法に関するこの記事はこれで終わりです。MYSQL Truncate に関するより関連性の高いコンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • MySQL Truncate の使用方法の詳細な説明
  • MySQL での Truncate の使用法の詳細な説明

<<:  HTML テーブル マークアップ チュートリアル (48): CSS で変更されたテーブル

>>:  廃止された Docker は Podman に置き換えられますか?

推薦する

Vue が学ぶべき知識ポイント: forEach() の使用

序文フロントエンド開発では、目的のコンテンツを取得するためにループをトラバースする必要がある状況に頻...

CentOS/RHEL システムで VLAN タグ付きイーサネット カードを使用する方法

シナリオによっては、Linux サーバー (CentOS/RHEL) の同じイーサネット カード (...

同期スクロールを実現するための複数のテーブル要素のサンプルコード

Element UIは、複数のテーブルを同時に水平および垂直にスクロールすることを実装します。 コー...

MySQL 起動時に報告される ERROR:2002 の分析と解決方法

序文この記事は主にMySQL起動エラー2002の分析と解決方法を紹介しています。参考と勉強のために共...

ファイルをアップロードするための HTML フォームの「参照」ボタンを変更する方法

コードをコピーコードは次のとおりです。 <!DOCTYPE HTML PUBLIC "...

Linux環境でユーザーにsudo権限を追加する方法

sudo 設定ファイルsudo のデフォルトの設定ファイルは /etc/sudoers です。一般的...

mysqlはコンマに基づいてデータ行を複数の行に分割します

目次分離効果コマンドラインの説明関与する機能分離効果-- 別居前1,2,3,4 -- 別居後1 2 ...

Docker で Harbor パブリック リポジトリを構築する方法の例

前回のブログ投稿では、レジストリのプライベート ウェアハウスについて説明しました。今日は、Harbo...

ダイナミックな波効果を実現するSVG+CSS3

ベクトル波 <svg viewBox="0 0 560 20" class...

HTML でスクロールバーを非表示にしたり削除したりする方法

1. 属性付きHTMLタグXML/HTML コードコンテンツをクリップボードにコピー< htm...

システム CD をマウントして yum ウェアハウスを構築する VMware 15.5 バージョンのグラフィック チュートリアル

1. CentOS 7 仮想マシンを開きます。 2. 仮想マシンにログインし、リストにないユーザー名...

JavaScript はクラス宝くじアプレットを実装します

この記事では、クラス抽選アプレットを実装するためのJavaScriptの具体的なコードを参考までに紹...

Linux での Firewalld の高度な設定の使用に関する詳細な説明

IPマスカレードとポート転送Firewalldは2種類のネットワークアドレス変換をサポートしています...

Windows に MySQL をインストールする方法のグラフィック チュートリアル

概要: この記事では主に、Windows 環境に MySQL をインストールする方法について説明しま...

MySQL 5.7 および 8.0 データベースのルート パスワードを忘れた場合の解決策

注: MySQL5.7 で root パスワードをクラックするには、パスワード認証をスキップしてデー...