Mysql优化所有数据库中的一个表

我在mysqlcheck手册中看到,有一个选项可以覆盖那个数据库选项,但是没有很好的解释。

我试图运行mysqlcheck -o,我希望它优化每个数据库中存在的特定表,但只有该表。

**我想我可能不够清楚

我有250个数据库,都包含表api_log。 我想运行一个命令,只会优化表api_log,但在每个数据库的MySQL服务器。

例如:

mysqlcheck -o --tables api_log -A 

显然这个特定的代码片段不起作用,但它expression了我想要完成的事情。 我不想优化每个数据库中的每个表,只有一个表存在于所有250个数据库中。

你可以像这样优化单个表:

mysqlcheck -u root -o database_name table_name

比如这个会优化'mysql'数据库的表'user'。

 $ mysqlcheck -u root -o mysql user mysql.user OK 

编辑

对于有数百个数据库的情况, 你可以像这样编写这个程序

 table_name='api_log' mysql -NB -u root -e 'show databases' | while read db_name do if mysql -NB -u root "$db_name" -e 'show tables' | egrep -wq "$table_name"; then echo "Optimizing $db_name.$table_name" mysqlcheck -u root -o "$db_name" "$table_name" fi done 

这将跨越所有的数据库,并检查是否有表名为“api_log”,如果它会优化它。