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から順にナンバリングされます。