0

インデックスを削除するクエリを実行したところ、時間がかかりすぎてクエリを強制終了しました。興味がありますが、インデックスを部分的に削除しましたか、それともインデックスは影響を受けませんか?

ALTER TABLEインデックスを削除するために 1 回目と2 回目を使用しDROP INDEXましたが、最終的に両方のクエリを強制終了しました。MySQL のアプローチについての私の理解では、一時テーブルにコピーし、一時テーブルに変更を適用 (インデックスを削除) し、元のテーブルを削除して、一時テーブルの名前を変更します。これは正しいです?ALTER TABLEとコマンドの両方に当てはまりDROP INDEXますか、それともどちらか一方だけに当てはまりますか?

4

2 に答える 2

1

これにより、すべてがロールバックされます。ACID 苦情データベースには、半分完了したトランザクションなどありません。それはオール・オア・ナッシングの状況です。

ここで、InnoDB に関する限り、特に覚えておく必要があることは、インデックスはテーブルに格納されません。これは、テーブル内のデータへのポインターを持つディスク上の個別の B ツリー構造です。したがって、MySQL はテーブルからインデックスを削除する必要はありません。インデックス構造を破壊するだけです。

于 2013-08-08T05:41:21.167 に答える