私はこの「簡単な」スクリプトを作成しました:
set @tables_like = null;
set @optimize = null;
set @show_tables = concat("show tables where", ifnull(concat(" `Tables_in_", database(), "` like '", @tables_like, "' and"), ''), " (@optimize:=concat_ws(',',@optimize,`Tables_in_", database() ,"`))");
Prepare `bd` from @show_tables;
EXECUTE `bd`;
DEALLOCATE PREPARE `bd`;
set @optimize := concat('optimize table ', @optimize);
PREPARE `sql` FROM @optimize;
EXECUTE `sql`;
DEALLOCATE PREPARE `sql`;
set @show_tables = null, @optimize = null, @tables_like = null;
実行するには、データベースに接続されているSQL IDEに貼り付けます。
注意:このコードはphpmyadminでは機能しません。
使い方
show tables
ステートメントを実行し、それを準備済みステートメントに格納します。次にoptimize table
、選択したセットでa を実行します。
varに異なる値を設定することで、最適化するテーブルを制御できます@tables_like
(例:)set @tables_like = '%test%';
。