Das Löschen eines doppelten Index in MySQL dauerte ziemlich lange. Während ich wartete, suchte ich danach und fand diesen Beitrag aus dem Jahr 2006, in dem es darum ging, wie MySQL behandelt ADD
und DROP
indexiert.
Wenn eine Tabelle T eine MySQL-Tabelle mit vier Indizes (ndx1, ndx2, ndx3, ndx4) ist und Sie den Drop-Index ndx3 für Tabelle T ändern möchten; Hier ist genau das, was unter der Haube passiert:
1) MySQL kopiert T.MYD in eine temporäre Tabelle, dh S.MYD und ein Nullbyte S.MYI. 2) MySQL ändert die Tabelle S und fügt den Index ndx1 (...) hinzu. 3) MySQL ändert die Tabelle S und fügt den Index ndx2 (...) hinzu. 4) MySQL ändert die Tabelle S und fügt den Index ndx4 (...) hinzu. 5) MySQL löscht T.MYD und löscht T.MYI. 6) MySQL benennt S.MYD in T.MYD um und benennt S.MYI in T.MYI um
Ist das noch wahr? Ist sein Rat noch gültig?
Bei derselben MyISAM-Tabelle T mit vier Indizes (ndx1, ndx2, ndx3, ndx4) möchten Sie den Drop-Index ndx3 für Tabelle T ändern. Versuchen Sie dies stattdessen:
1) Tabelle T1 wie T erstellen; Dadurch wird eine leere Tabelle T1 mit den Indizes ndx1, ndx2, ndx3 und ndx4 erstellt. 2) Tabelle T1 Drop Index ndx3 ändern; Dadurch wird der Index ndx3 auf dem leeren T1 gelöscht, was sofort erfolgen sollte. 3) in T1 einfügen select * from T; Dadurch wird die Tabelle T gefüllt und alle drei (3) Indizes für T1 in einem Durchgang geladen. 4) Drop Table Table T; 5) Tabelle T1 in T umbenennen;
Wie gehen Sie alle mit dem Hinzufügen und Entfernen von Indizes zu großen Tabellen um?