使用PHP优化MySQL表
在MySQL中,如果您进行了更改或删除了表的大部分内容,则可以使用OPTIMIZETABLE。
任何已删除的行都保留在服务器的后台,以允许这些空间的重用。OPTIMIZETABLE命令回收未使用的空间并对数据文件进行碎片整理。
对于普通的MyISAM表,OPTIMIZE命令以以下方式工作。
如果表已删除或拆分行,请修复该表。
如果索引页未排序,请对其进行排序。
如果表的统计信息不是最新的(并且无法通过对索引进行排序来修复),请对其进行更新。
您可以使用以下PHP代码自动执行此操作。
//连接到数据库 $con = mysql_connect("localhost","root","wibble"); //选择正确的数据库 mysql_select_db("database"); //获取表列表 $alltables = mysql_query("SHOW TABLES;"); //记录输出 $output = array(); while($table = mysql_fetch_assoc($alltables)){ foreach($table as $db => $tablename){ $sql = 'OPTIMIZE TABLE '.$tablename.';'; $response = mysql_query($sql) or die(mysql_error()); $output[] = mysql_fetch_assoc($response); }; }; //打印输出 print_r($output);
这是输出数组包含的示例
[0] => Array ( [Table] => database.table1 [Op] => optimize [Msg_type] => status [Msg_text] => Table is already up to date ) [1] => Array ( [Table] => database.table2 [Op] => optimize [Msg_type] => status [Msg_text] => OK )
请注意,您无需每次执行任何操作都运行此命令。您仅应在重大数据动荡之后或使用几个月或几周后运行此程序。