300万行6列のテーブルがあります。問題は、私のmysqldサーバーがクエリの出力を生成せず、単にタイムアウトすることです。
次に、ここで、過剰なインデックス作成には、メモリからディスクへのデータのスワップが多すぎて、サーバーの速度が低下する可能性があることを読みました。
だから私はクエリを実行しましたALTER TABLE <Tbl_name> DROP INDEX <Index_name>;
。このクエリは10時間実行されており、まだ完了していません。
- これは非常に長い間実行されると予想されますか?
- インデックスを削除/変更するためのより良い方法はありますか?
編集-SHOWCREATETABLE出力を追加しました
| Sample | CREATE TABLE `sample` (
`ID` int(11) NOT NULL AUTO_INCREMENT,
`FiMD5` varchar(32) NOT NULL,
`NoMD5` varchar(32) NOT NULL,
`SeMD5` varchar(32) NOT NULL,
`SeesMD5` varchar(32) NOT NULL,
`ImMD5` varchar(32) NOT NULL,
`Ovlay` tinyint(1) NOT NULL DEFAULT '1',
PRIMARY KEY (`ID`),
KEY `FiMD5_3` (`FiMD5`),
KEY `ID` (`ID`),
KEY `ID_2` (`ID`),
KEY `pIndex` (`FiMD5`),
KEY `FiMD5_` (`FiMD5`,`NoMD5`)
) ENGINE=InnoDB AUTO_INCREMENT=3073630 DEFAULT CHARSET=latin1 |