Ja, es sollte schneller sein, eine einzelne Anweisung ALTER TABLE als zwei laufen.
In meiner Erfahrung (mit InnoDB auf 5.1 und 5.5), scheint MySQL die Tabelle "in Stelle" nicht zu ändern. MySQL erstellt tatsächlich eine neue Tabelle als Kopie der alten Tabelle mit den angegebenen Änderungen.
Zwei separate Anweisungen erfordern, dass MySQL diesen Kopiervorgang zweimal durchführt.
Mit einer einzigen Anweisung geben Sie MySQL die Möglichkeit, alle Änderungen mit nur einem Kopiervorgang vorzunehmen. (Ich kenne die Details der MySQL-Interna nicht, aber es ist möglich, dass MySQL die Kopie tatsächlich zweimal ausführt.)
Andere Datenbank-Engines (MyISAM et al.) Können anders verarbeitet werden.
Ich glaube, die InnoDB-Plugin und/oder neuere Versionen von InnoDB in MySQL (> 5.5) haben einige Algorithmen andere als die „Kopie“ Methode, zumindest für einige Veränderungen, die für die Tabelle, damit noch verfügbar sein, während ALTER TABLE ausgeführt wird (für Leseabfragen). Aber ich kenne nicht alle Details.
Machst du diese Operation intensiv und unter harter Last? –
@Bencaine Ist es wichtig? Ich meine, wie oft wirst du das machen müssen. Fast nie, oder? – Strawberry
Messen Sie es und finden Sie heraus ... –