MySQL 再シーケンス TIPS

MySQLのテーブルのプライマリキーを再シーケンス(リナンバリング)する方法です。
他テーブルとリレーションしているカラムでこれをやるとデータベースが破壊されますので注意!(考えればわかりますよね?)
作業前は必ずバックアップを取るようにして下さい。

以下はWordPressで使用しているwp_postmetaテーブルとwp_optionsテーブルの例です。
これを実施したからといってデータベースへのアクセスは速くはなりません。
番号の歯抜けや並び順が気になって仕方がない人向けです。

mysql> ALTER TABLE wp_postmeta ORDER BY post_id, meta_key;
mysql> ALTER TABLE wp_postmeta DROP meta_id;
mysql> ALTER TABLE wp_postmeta ADD meta_id BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT FIRST, ADD PRIMARY KEY(meta_id);
mysql> ALTER TABLE wp_options DROP option_id;
mysql> ALTER TABLE wp_options ADD option_id BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT FIRST, ADD PRIMARY KEY(option_id);

クエリの内容は並べ替え(ORDER BY)をして、プライマリキーを削除(DROP)して、再作成(ADD)すればいいだけです。
そうすればプライマリキーが1から順にナンバリングされます。