mysql INNODBテーブルでキーを無効にする(インデックス作成を一時停止する)場合、その設定はどれくらい続きますか?
次のようなクエリの場合:
ALTER TABLE users DISABLE KEYS;
キーはスクリプトの最後で再び有効になりますか? または、明示的にインデックスを有効にするまで持続しますか?
mysql INNODBテーブルでキーを無効にする(インデックス作成を一時停止する)場合、その設定はどれくらい続きますか?
次のようなクエリの場合:
ALTER TABLE users DISABLE KEYS;
キーはスクリプトの最後で再び有効になりますか? または、明示的にインデックスを有効にするまで持続しますか?
回答:
Fine Manual(読む価値は十分あります)は、そのステートメントの効果は、対応するALTER TABLE ... ENABLE KEYS
ステートメントが実行されるまで続くことを示唆しています。
実際には、ALTER TABLE ... DISABLE KEYSおよびALTER TABLE ... ENABLE KEYSは機能しません!!!!
さらに掘り下げて調べたところ、InnoDBの母会社であるInnoBase Oy(Oracle Borgで9分の7にされる前)から、これが事実であることがわかりました。
このリンクでは、DISABLE KEYSを実行し、外部キーを一緒に無効にすることをお勧めします。私は両方とも不要だと思うが、これは明らかに誰かのために働いた。
更新2011-07-18 12:35 EDT
これは、MySQLに残された悪を暴露するため、非常に良い質問です。mysqldumpプログラムは、ストレージエンジンに関係なく、すべてのテーブルの作成とロードに関連してDISABLE KEYSとENABLE KEYSを盲目的にドロップします。DISABLE KEYSおよびENABLE KEYSはMyISAMで適切に機能するため、InnoDBテーブルでは機能しないため(最良の場合は効果がありません)、この未知の事実はMySQLコミュニティによって文書化される必要があります。そうそう、MySQLはOracleとして知られる銀河帝国の真ん中にあります。私は、今後のドキュメントの変更について息を止めません。