MySQLは、その速度と信頼性のために認識され、世界で最も人気のあるオープンソー この記事では、MySQLデータベーステーブルからすべてのデータを削除する方法と、それが自動増分フィールドにどのように影響するかを見ていきます。MySQLデータベーステーブル内のすべてのデータを削除するには、2つの方法があります。これにより、テーブル内のすべてのデータが非常に迅速に削除されます。 MySQLでは、テーブルは実際に削除されて再作成されるため、クエリの速度が向上します。 返されるMyISAMテーブルの削除された行の数はゼロです。INNODBの場合は、削除された実際の数を返します。これにより、テーブル内のすべてのデータも削除されますが、「TRUNCATE TABLE」メソッドを使用するほど迅速ではありません。 MySQL>=4.0では、削除された行の数が返されます。MySQL3.23では、返される数は常にゼロです。MyISAMテーブルの自動増分列
MyISAMテーブルに自動増分主キー列がある場合、使用するdeleteメソッドによって結果がわずかに異なります。 “TRUNCATE TABLE”メソッドを使用すると、自動インクリメントシード値は1にリセットされます。 “DELETE FROM”メソッドを使用すると、自動インクリメントシードは以前のままになります(たとえば、最後に挿入されたレコードの自動インクリメントフィールドが123の場合、次の挿入されたレコードは124に設定されます)。これはMySQLに当てはまることに注意してください>=4.0;MySQL3.23のTRUNCATEマニュアルページの私の読書から、TRUNCATEはDELETEと同じように動作し、自動増分シードがリセットされないことを意味します。 私は現在、それをテストするために3.23データベースを設定していないので、これを確認することはできません。
INNODBテーブルの自動インクリメント列
INNODBテーブルの場合、”TRUNCATE TABLE”または”DELETE FROM”メソッドを使用するかどうかにかかわらず、自動インクリ 新しいテーブルに5つのレコードを挿入し、すべてのレコードを削除して別のレコードを挿入した場合、使用したメソッドに関係なく、フィールドの値は6にな
2009年2月17日更新:私はもともとMySQL4.0が現在のバージョンだったときにこの投稿を書きました。 私はちょうどMySQL5.0を使用してINNODBテーブルで上記をテストし、TRUNCATEを使用すると自動インクリメントフィールドがデフォルトにリセットされます。 したがって、ある時点で動作が変更されたか、上記の文を作成したときに私が間違っていました。すべてのデータを本当に削除しますか?