php-MySQL命令删除表的所有非主索引

是否有一个MySQL命令可以删除除单个表中的第一个索引以外的所有其他索引,从而仅保留主索引?

我可以使用下面的MySQL命令删除第二个Post_Date索引,但是我在删除所有其余的索引时遇到问题.

mysql_query("ALTER TABLE $TableName DROP INDEX Post_Date");

额外的Post_Date和Post_Date_x索引是在脚本的开头创建的,因此我想在脚本的结尾使用脚本末尾的MySQL命令将其删除.

请记住,_x在Post_Date_x中会有所不同,并且可能从1到10,或者从1到100.因此可能需要Loop或IF语句.

MySQL命令将成为PHP脚本的一部分

感谢您的时间.

Action  Keyname Type    Unique  Packed  Column  Cardinality Collation   Null    Comment
 Edit    Drop   PRIMARY BTREE   Yes No  id  830 A       
 Edit    Drop   Post_Date   BTREE   Yes No  Post_Date   830 A       
 Edit    Drop   Post_Date_2 BTREE   Yes No  Post_Date   830 A       
 Edit    Drop   Post_Date_3 BTREE   Yes No  Post_Date   830 A       
 Edit    Drop   Post_Date_4 BTREE   Yes No  Post_Date   830 A       
 Edit    Drop   Post_Date_5 BTREE   Yes No  Post_Date   830 A       
 Edit    Drop   Post_Date_6 BTREE   Yes No  Post_Date   830 A       
 Edit    Drop   Post_Date_7 BTREE   Yes No  Post_Date   830 A       
 Edit    Drop   Post_Date_8 BTREE   Yes No  Post_Date   830 A   

解决方法:

这应该做到-

$res = mysql_query("SHOW INDEX FROM `$TableName` WHERE `Key_name` LIKE 'Post_Date%'");

while ($row = mysql_fetch_object($res)) {
    mysql_query("DROP INDEX `{$row->Key_name}` ON `{$row->Table}`") or die(mysql_error());
}
上一篇:使用索引满足MySQL条件


下一篇:奇怪的MySQL表大小