テーブル内のデータを削除するには、削除と切り捨ての 2 つの方法があります。TRUNCATE TABLE は、個々の行の削除操作を記録せずにテーブル内のすべての行を削除するために使用されます。 TRUNCATE TABLE は、WHERE 句のない DELETE ステートメントに似ていますが、TRUNCATE TABLE の方が高速で、使用するシステム リソースとトランザクション ログ リソースが少なくなります。以下はSQLにおけるTruncateの使い方について説明しています。 テーブルが不要になった場合は drop を使用します。テーブルを保持しながらすべてのレコードを削除する場合は truncate を使用します。一部のレコードを削除する場合 (常に WHERE 句を使用) は delete を使用します。 Truncate は、テーブル内のすべてのデータをすばやくクリアできる SQL 構文です。また、カウントをゼロにリセットし、自動的に増分された値でフィールドを再計算することもできます。 MySQL 切り捨ての使用1. 構文を切り捨てる[ { データベース名.[ スキーマ名 ]. | スキーマ名. } ] パラメータ データベース名 スキーマ名 テーブル名 2. Truncateの使用上の注意1. TRUNCATE TABLE は、WHERE 句のない DELETE ステートメントと機能的に同じです。どちらもテーブル内のすべての行を削除します。ただし、TRUNCATE TABLE は DELETE よりも高速で、使用するシステム リソースとトランザクション ログ リソースが少なくなります。 3. TRUNCATE TABLEは次のテーブルでは使用できません1. FOREIGN KEY 制約によって参照されるテーブル。 (自分自身を参照する外部キーを持つテーブルを切り捨てることができます。) 2. インデックス ビューに参加するテーブル。 3. トランザクション レプリケーションまたはマージ レプリケーションを使用して公開されたテーブル。 4. 上記の特性の 1 つ以上を持つテーブルの場合は、DELETE ステートメントを使用します。 5. TRUNCATE TABLE 操作では個々の行の削除が記録されないため、トリガーをアクティブ化できません。 IV. TRUNCATE、Drop、Deleteの違い1. Drop と Delete では、テーブルのデータ (定義) のみが削除されます。Drop ステートメントでは、テーブル構造、依存制約、トリガー、およびインデックスが削除されます。テーブルに依存するストアド プロシージャ/関数は保持されますが、無効になります。 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 と DELETE の違いMYSQL では、TRUNCATE と DELETE の両方でテーブル内のデータをクリーンアップできますが、それらの違いは何でしょうか?以下の点から分析します。 1. 条件付き削除これは、DELETE には WHERE 句があり、条件付き削除をサポートしているため理解しやすいですが、TRUNCATE ではテーブル全体の削除しかできません。 # 削除 - 条件付き削除 DELETE FROM student WHERE id = 1; # delete - テーブル全体のデータを削除します DELETE FROM student; # truncate - テーブル全体のデータを削除します TRUNCATE TABLE student; 2. トランザクションのロールバックDELETE はデータ操作言語 (DML) であるため、元のデータは操作中にロールバック セグメントに配置され、ロールバックできます。一方、TRUNCATE はデータ定義言語 (DDL) であるため、元のデータは操作中に保存されず、ロールバックできません。 DELETE が正常にロールバックできることがわかります。 TRUNCATE を正常にロールバックできないことがわかります。 3. 清掃速度データ量が比較的少ない場合、DELETE と TRUNCATE のクリーンアップ速度の差はそれほど大きくありません。しかし、データ量が多い場合には、その違いが見られます。 2 番目の項目で述べたように、TRUNCATE はロールバックをサポートする必要がないため、使用するシステム リソースとトランザクション ログ リソースが少なくなります。 DELETE ステートメントは、一度に 1 行ずつ削除し、削除された行ごとにトランザクション ログにエントリを記録します。処理は遅いですが、比較的安全です。 4. ハイウォーターマークのリセットテーブル レコードに対する DML 操作が継続的に実行されると、テーブルの最高水準点 (HWM) は増加し続けます。DELETE 操作後にテーブル内のデータは削除されますが、テーブルの最高水準点は下がりません。DML 操作が発生すると、データベース容量は減少するのではなく、増加するだけです。したがって、DELETE を使用すると、テーブル内のデータが大幅に削減された場合でも、クエリ速度は DELETE 操作前と同じになります。 MySQL Truncate の使用法補足序文: テーブルをクリアしたいときは、truncate ステートメントをよく使用します。ほとんどの場合、私たちは、そのようなステートメントの使用シナリオや注意事項を考えずに、ニーズが満たされるかどうかだけを気にします。この記事では主にtruncate文の使い方と注意点について紹介します。 1. 使用構文を切り捨てるtruncate の機能は、テーブルをクリアするか、テーブルを切り捨てることであり、テーブル上でのみ使用できます。 truncate の構文は非常にシンプルで、テーブル名を続けるだけです。 たとえば、 truncate ステートメントを実行するには、テーブルに対する drop 権限が必要です。論理的には、truncate table は、すべての行を削除する delete ステートメント、または drop table と create table ステートメントの組み合わせに似ています。高いパフォーマンスを実現するために、データを削除する DML メソッドをバイパスし、ロールバックできないようにします。 truncate table は delete に似ていますが、DML ステートメントではなく DDL ステートメントとして分類されます。 2. 切り捨て、ドロップ、削除の比較前述のように、truncate は delete や drop と非常によく似ています。しかし、実際には、これら 3 つの間には依然として大きな違いがあります。以下は、3 つの類似点と相違点の簡単な比較です。
3. 使用シナリオと注意事項を切り捨てるこれまでの紹介を通じて、truncate ステートメントの使用シナリオを簡単に導き出すことができます。つまり、テーブル データが完全に不要な場合に truncate を使用できます。一部のデータを削除する場合は、delete を使用し、where 句を含めることを忘れないでください。テーブルを削除する場合は、もちろん drop を使用します。テーブルを保持してすべてのデータを削除し、それがトランザクションとは関係がない場合は、truncate を使用します。トランザクションに関連している場合、またはトリガーをトリガーする場合は、やはり delete を使用します。テーブル内のフラグメントを整理する場合は、truncate を使用してからデータを再挿入できます。 いずれにしても、テーブルの切り捨てはリスクの高い操作であり、特に本番環境ではより注意する必要があります。ここでは注意すべき点をいくつか挙げますので、使用時の参考にしていただければ幸いです。
以上がMySQL Truncateの詳しい使い方の詳しい内容です。MySQL Truncateの詳細については、123WORDPRESS.COMの他の関連記事もご覧ください。 以下もご興味があるかもしれません:
|
<<: Ubuntu 20.04の新バージョンでルートユーザーを使用してシステムにログインする方法の詳細なチュートリアル
>>: React+axios は github 検索ユーザー機能を実装します (サンプル コード)
JavaScriptでの検索二分木実装は参考までに。具体的な内容は以下のとおりです。バイナリ検索木 ...
前回の「最もシンプルなスイッチを実現するCSS」のように、HTML5とCSS3でほとんどの機能をすで...
おすすめの記事: CSS 疑似クラスの右下隅をクリックすると、選択を示すチェックマークが表示されます...
目次1. はじめに2. ユーザーテーブルを準備する2.1 グループ化ルール2.2 グループの使用2....
MySQL のインストール時にいくつかの問題が発生しました。オンラインで見つけた回答は似たようなもの...
最近、MySQL に触れました。昨日、テーブル構造情報を格納するための新しいテーブルを作成しました。...
目次1. reduxとreactの関係2. Reactのマルチコンポーネント共有3. reduxの3...
基礎リレーショナル データベースでは、各データ テーブルはファイルに相当し、異なるストレージ エンジ...
この記事では、MacOSでのMySQL 8.0.18のインストールと成功したコマンドライン操作を記録...
目次序文Vue 更新ビューパッチ同じVノードパッチVノード更新子供序文Vue は仮想 DOM を使用...
目次1. 環境整備2. イメージを実行する問題を解決するRedis のインストールNginx のイン...
この記事の例では、画像のドラッグと並べ替えを実装するためのVueの具体的なコードを参考までに共有して...
<html> <ヘッド> <meta http-equiv="...
目次ディレクトリ構造binディレクトリconfディレクトリlibディレクトリwebapps ディレク...
パフォーマンスは本当に重要ですか?パフォーマンスは重要であり、誰もがそれを知っています。なぜ私たちは...