私はデータベースを継承しており、クリーンアップと高速化を目指しています。私は、30,000,000行を含むテーブルを持っています。その多くは、プログラマーに代わってエラーが原因で挿入されたジャンクデータです。最適化された新しいインデックスを追加する前に、テーブルをMyISAMからInnoDBに変換し、ジャンクデータを含む多くの行を削除しようとしています。
データベースはMySQL 5.0であり、サーバーへのルートアクセス権があります。最初にこれらのコマンドをAdminerで実行し、次にphpMyAdminで実行しましたが、どちらも同じ結果になりました。
私が実行しているコマンドは、
DELETE
FROM `tablename`
WHERE `columnname` LIKE '-%'
基本的に、ダッシュで始まるこの列のすべてを削除します-
。
約3〜5分間実行され、プロセスリストを表示すると消えます。
それから走ります
SELECT *
FROM `tablename`
WHERE `columnname` LIKE '-%'
そして何百万もの行を返します。
削除ステートメントが完了しないのはなぜですか?
PS、MySQL 5.0が古くなっていることに気付いています。私は、DBをMySQL 5.6 w InnoDB(おそらくMariaDB 10 w XtraDB)に移行する作業を行っていますが、それが起こるまでは、DBをそのまま使用して答えを探しています。
-
編集が削除されました。回答を参照してください。
WHERE
です。