MySQLコマンドやSQL文に関する各種メモ書き

MySQLでデータを全件削除後、auto_incrementの値をリセットする

MySQLで「table1」というテーブルのデータを全件数削除するには

DELETE from table1

としますが、このとき auto_increment を指定してあるカラムがあると、そのauto_incrementの値はそのまま残ります。

(次にデータをINSERTした時に1番から始まらない)

なので auto_increment 値をリセットします

ALTER TABLE table1 PACK_KEYS =0 CHECKSUM =0 DELAY_KEY_WRITE =0 AUTO_INCREMENT =1

これでOK。

PACK_KEYS
PACK_KEYS は MyISAM テーブルとだけ効果を発揮します。小さいインデックスを持ちたければ、このオプションを1に設定してください。これは通常更新スピードを遅くし、読み込みを早くします。オプションを0に設定すると、全てのキー パッキングが無効になります。これを DEFAULT に設定すると、ストレージ エンジンには長い CHAR や VARCHAR カラムだけをパックするように指令が出ます。
もし PACK_KEYS を利用しなければ、デフォルトでは文字列をパックしますが、数字はパックしません。もし PACK_KEYS=1 を利用すると、数字もパックされます
CHECKSUM
MySQL に全ての行のライブ チェックサムを維持させたければこれを1に設定してください。(これはテーブルが変更される度に MySQL が自動的に更新するチェックサムです。)これはテーブルの更新スピードを少し遅くしますが、壊れたテーブルを見つけるのが早くなります。CHECKSUM TABLE ステートメントはチェックサムをリポートします。(MyISAM のみです。)
DELAY_KEY_WRITE
DELAY_KEY_WRITE
キー更新をテーブルが閉じられる時まで遅らせたければこれを1に設定してください。項4.2.3. 「システム変数」 内の delay_key_write システム変数についての説明を参照してください。(MyISAM のみです。)

No.458
08/12 21:43

edit