http://d.hatena.ne.jp/hirose31/20100105/1262681800
http://d.hatena.ne.jp/sh2/20091120
http://bugs.mysql.com/bug.php?id=47622
みごとにこれ。
ALTER TABLE hoge DROP KEY hoge_id;
ALTER TABLE hoge ADD UNIQUE (hoge_id);
はいエラー。
エラーはでてるが、このパターンだととりあえず index は使われてるっぽい。実測とexplainレベルでしか確認しようがないけど。
対策
SET OLD_ALTER_TABLE=ON;
ALTER TABLE hoge DROP KEY hoge_id;
ALTER TABLE hoge ADD UNIQUE (hoge_id);
たぶんこれ。
でもマスタースレーブ構成で伝搬されたALTERも OLD にする必要があり、その場合は全スレーブで
SET GLOBAL OLD_ALTER_TABLE=ON;
してから上のクエリーをマスターに投げればいいのか?
ここまだ未検証。
http://d.hatena.ne.jp/sh2/20091120
http://bugs.mysql.com/bug.php?id=47622
みごとにこれ。
ALTER TABLE hoge DROP KEY hoge_id;
ALTER TABLE hoge ADD UNIQUE (hoge_id);
はいエラー。
エラーはでてるが、このパターンだととりあえず index は使われてるっぽい。実測とexplainレベルでしか確認しようがないけど。
対策
SET OLD_ALTER_TABLE=ON;
ALTER TABLE hoge DROP KEY hoge_id;
ALTER TABLE hoge ADD UNIQUE (hoge_id);
たぶんこれ。
でもマスタースレーブ構成で伝搬されたALTERも OLD にする必要があり、その場合は全スレーブで
SET GLOBAL OLD_ALTER_TABLE=ON;
してから上のクエリーをマスターに投げればいいのか?
ここまだ未検証。
