我想OPTIMIZE
所有当前零碎的表。这些表应该有information_schema.DATA_FREE > 0
。
是否可以在SQL中的一个命令中优化具有此属性的所有表,或者必须编写外部代码才能完成此操作?
最佳答案
你可以这样做:
SELECT concat("OPTIMIZE TABLE ", table_schema,".",table_name,";")
FROM tables
WHERE DATA_FREE > 0
INTO OUTFILE '/tmp/optimize.sql';
SOURCE '/tmp/optimize.sql';
或者,如果第一个失败,请尝试:
SELECT concat("OPTIMIZE TABLE ", table_schema,".",table_name,";")
FROM information_schema.tables
WHERE DATA_FREE > 0
INTO OUTFILE '/tmp/optimize.sql';
SOURCE /tmp/optimize.sql;
关于mysql - 所有碎片表的Mysql OPTIMIZE TABLE,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1031885/