202

テーブルからすべての行を削除する必要がありますが、新しい行を追加するときに、自動インクリメントを持つ主キー ID をそれぞれ 0 から 1 から再開する必要があります。

4

5 に答える 5

338

削除せず、切り捨てを使用してください:

Truncate table XXX

テーブル ハンドラは、最後に使用された AUTO_INCREMENT 値を記憶していませんが、最初からカウントを開始します。これは、通常はシーケンス値を再利用しない MyISAM と InnoDB にも当てはまります。

ソース

于 2012-09-29T10:20:18.193 に答える
95

使用できない場合TRUNCATE(たとえば、外部キー制約のため)、すべての行を削除した後に、alter table を使用して auto_increment を再開できます。

ALTER TABLE mytable AUTO_INCREMENT = 1
于 2012-09-29T10:47:05.343 に答える
8

興味深い事実です。

常にパフォーマンスが向上すると確信していましたが、私の場合、数行しか入力されていない外部キーを持つ約 30 個のテーブルを持つデータベースの場合、すべてのテーブルTRUNCATEに約 12 秒かかりました。行。自動増分を設定すると、合計で約 1 秒追加されますが、それでもはるかに優れています。TRUNCATEDELETE

したがって、両方を試してみることをお勧めします。どちらがあなたのケースでより速く機能するかを確認してください。

于 2014-02-17T12:13:40.560 に答える