是否有一个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());
}