我想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/

10-12 01:07