テーブル内のデータを削除するには、削除と切り捨ての 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 検索ユーザー機能を実装します (サンプル コード)
序文フロントエンドフレームワークのヘビーユーザーとして、私はテクノロジーを選択する際にそのエコロジー...
余計なことは言わないで、コードだけ見てみましょう〜 # docker-compose をダウン # ...
このプロジェクトでは、環境を構築するために Docker コンテナを使用します。Dockerfile...
序文Dockerfile は Docker プログラムによって解釈されるスクリプトです。Docker...
VNodeとはvue.js には VNode クラスがあり、これを使用してさまざまな種類の vnod...
1. 公式ウェブサイトから Linux バージョンをダウンロードします: https://dev.m...
成果を達成する実装コード <h1>123WORDPRESS.COM</h1>...
前面に書かれた多くの場合、現在のプロジェクトの状況とビジネスニーズに基づいて Nginx をインスト...
メインライブラリの構成1. MySQLを設定する vim /etc/my.cn # ファイルに次の内...
主な違いは次のとおりです。 1. MySQL はデフォルトで MyISAM を使用します。 2. M...
コードをコピーコードは次のとおりです。 <object classid="clsid...
CSSとは# CSS (Cascading Style Sheets の略) は、「カスケーディング...
最近、Docker イメージのプルが非常に不安定です。遅く、タイムアウトすることがよくあります。 x...
目次JS スリーマウンテンズ同期 非同期同期と非同期の違い範囲、終了関数スコープチェーンブロックスコ...
IE8 や Chrome で上記の設定を使用すると、画面の最大幅に合わせて表示が統一され、各列の幅は...