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

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

序文:

テーブルをクリアしたいときは、truncate ステートメントをよく使用します。ほとんどの場合、私たちは、そのようなステートメントの使用シナリオや注意事項を考えずに、ニーズが満たされるかどうかだけを気にします。この記事では主にtruncate文の使い方と注意点について紹介します。

1. 使用構文を切り捨てる

truncate の機能は、テーブルをクリアするか、テーブルを切り捨てることであり、テーブル上でのみ使用できます。 truncate の構文は非常にシンプルで、テーブル名を続けるだけです。たとえば、 truncate table tbl_nameまたはtruncate tbl_name

truncate ステートメントを実行するには、テーブルに対する drop 権限が必要です。論理的には、truncate table は、すべての行を削除する delete ステートメント、または drop table と create table ステートメントの組み合わせに似ています。高いパフォーマンスを実現するために、データを削除する DML メソッドをバイパスし、ロールバックできないようにします。 truncate table は delete に似ていますが、DML ステートメントではなく DDL ステートメントとして分類されます。

2. 切り捨て、ドロップ、削除の比較

前述のように、truncate は delete や drop と非常によく似ています。しかし、実際には、これら 3 つの間には依然として大きな違いがあります。以下は、3 つの類似点と相違点の簡単な比較です。

  • truncate と drop は DDL ステートメントであり、実行後にロールバックすることはできません。delete は DML ステートメントであり、ロールバックできます。
  • 切り捨てはテーブルにのみ適用できますが、削除とドロップはテーブル、ビューなどに適用できます。
  • Truncate はテーブル内のすべての行をクリアしますが、テーブル構造とその制約、インデックスなどは変更されません。drop はテーブル構造とそれが依存する制約、インデックスなどを削除します。
  • 切り捨てはテーブルの自動増分値をリセットしますが、削除はリセットしません。
  • 切り捨てではテーブルに関連付けられた削除トリガーはアクティブになりませんが、削除ではアクティブになります。
  • 切り捨て後、テーブルとインデックスが占めるスペースは初期サイズに復元されます。削除操作ではテーブルまたはインデックスが占めるスペースは削減されず、drop ステートメントによってテーブルが占めるスペースがすべて解放されます。

3. 使用シナリオと注意事項を切り捨てる

これまでの紹介を通じて、truncate ステートメントの使用シナリオを簡単に導き出すことができます。つまり、テーブル データが完全に不要な場合に truncate を使用できます。一部のデータを削除する場合は、delete を使用し、where 句を含めることを忘れないでください。テーブルを削除する場合は、もちろん drop を使用します。テーブルを保持してすべてのデータを削除し、それがトランザクションとは関係がない場合は、truncate を使用します。トランザクションに関連している場合、またはトリガーをトリガーする場合は、やはり delete を使用します。テーブル内のフラグメントを整理する場合は、truncate を使用してからデータを再挿入できます。

いずれにしても、テーブルの切り捨てはリスクの高い操作であり、特に本番環境ではより注意する必要があります。ここでは注意すべき点をいくつか挙げますので、使用時の参考にしていただければ幸いです。

  • 切り捨ては binlog を通じてロールバックできません。
  • Truncate はすべてのデータをクリアし、非常に高速に実行します。
  • 切り捨ては、外部キー制約によって参照されるテーブルでは使用できません。
  • truncate を実行するには、ドロップ権限が必要です。アカウントにドロップ権限を与えることは推奨されません。
  • truncate を実行する前に必ず再度確認し、確認してください。事前に以下のテーブルデータをバックアップしておくことをお勧めします。

以上が編集者が紹介したMySQLにおけるTruncateの使い方の詳しい説明です。皆様のお役に立てれば幸いです。また、123WORDPRESS.COM ウェブサイトをサポートしてくださっている皆様にも感謝申し上げます。

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

<<:  CSSは高さを設定せずにdivを完全に中央に配置することを実現します

>>:  HTML の 2 つのタブ ナビゲーション間の競合の解決方法

推薦する

Vue ミックスインの詳しい説明

目次ローカルミックスイングローバル ミックスイン要約するローカルミックスイン <テンプレート&...

Docker JVM メモリ使用量の表示

1. Docker コンテナのホスト マシンに入り、指定されたイメージを実行しているコンテナ ID ...

Linux で Scala 環境を構築し、簡単な Scala プログラムを書く

Linux に Scala 環境をインストールするのは非常に簡単です。Ubuntu 環境であれば、さ...

MySQL MHA の高可用性構成とフェイルオーバーの詳細な導入手順

目次1. MHAの紹介1. MHAとは何ですか? 2. MHAの構成3. MHAの特徴2. MySQ...

Vue computedのキャッシュ実装原理の詳細な説明

目次計算結果を初期化する依存関係の収集アップデートを配布する総括するこの記事では、計算された初期化と...

MySQL killコマンドの実行原理の詳細な説明

目次キル命令実行原理命令実行特性クエリ実行の強制終了の原則接続終了の実装原則中断される可能性はありま...

MySQLはストアドプロシージャを使用して数百万のデータを素早く追加します。サンプルコード

序文インデックスを追加した場合と追加しなかった場合の違いを反映するには、数百万のデータを使用する必要...

Linux サーバーのクイックアンインストールとノード環境のインストール (簡単に始められます)

1.まずnpmをアンインストールする sudo npm アンインストール npm -g 2. ノー...

CocosCreatorでリストを作成する方法

CocosCreator バージョン: 2.3.4 Cocos には List コンポーネントがない...

Vmware での Ubuntu サーバーのインストール チュートリアル

この記事では、Ubuntuサーバーバージョンのインストールグラフィックチュートリアルを参考までに紹介...

HTML シンボルからエンティティへのアルゴリズムのチャレンジ

チャレンジ:文字列内の文字 &、<、>、" (二重引用符)、および &...

Robots.txtの詳細な紹介

robots.txt の基本的な紹介Robots.txt はプレーンテキスト ファイルであり、Web...

自動ウェブページ更新と自動ジャンプのサンプルコード

ウェブページの自動更新: <head></head> の間に次のコードを追加...

Centos7 から Centos8 へのアップグレードに関するチュートリアル (画像とテキスト付き)

正式な環境でアップグレードする場合は、データと重要な設定をバックアップしてください。アップグレードに...

uniappの無痛トークンリフレッシュ方法の詳細な説明

フロントエンドがインターフェースを要求すると、バックエンドでインターフェースが定義されます。ステータ...