Я сделал этот «простой» скрипт:
set @a=null,@c=null,@b=concat("show tables where",ifnull(concat(" `Tables_in_",database(),"` like '",@c,"' and"),'')," (@a:=concat_ws(',',@a,`Tables_in_",database(),"`))");
Prepare `bd` from @b;
EXECUTE `bd`;
DEALLOCATE PREPARE `bd`;
set @a:=concat('optimize table ',@a);
PREPARE `sql` FROM @a;
EXECUTE `sql`;
DEALLOCATE PREPARE `sql`;
set @a=null,@b=null,@c=null;
Чтобы запустить его, просто вставьте его в любую SQL IDE, подключенную к вашей базе данных.
Примечание: этот код WON'T работает на phpmyadmin.
Как это работает
Он запускает оператор show tables
и сохраняет его в подготовленном операторе.Затем он запускает optimize table
в выбранном наборе.
Вы можете управлять тем, какие таблицы оптимизировать, задав другое значение в переменной @c
.