Tak powinno być szybciej uruchomić pojedynczy ALTER TABLE niż dwóch.
Z mojego doświadczenia (z InnoDB na 5.1 i 5.5), MySQL nie wydaje się modyfikować tabeli "na miejscu". MySQL faktycznie tworzy nową tabelę, jako kopię starej tabeli z określonymi modyfikacjami.
Dwie osobne instrukcje wymagałyby, aby MySQL dwukrotnie wykonał tę operację kopiowania.
Jedno zdanie daje MySQL możliwość wykonania wszystkich zmian za pomocą tylko jednej operacji kopiowania. (Nie znam szczegółów wewnętrznych MySQL, ale jest możliwe, że MySQL faktycznie wykonuje kopię dwa razy.)
Inne silniki baz danych (MyISAM i in.) Mogą być przetwarzane inaczej.
wierzę plugin InnoDB i/lub nowsze wersje InnoDB w MySQL (> 5.5) mają pewne algorytmy inne niż „kopię” metody, przynajmniej dla niektórych zmian, które pozwalają na stole, aby nadal być dostępne, gdy działa ALTER TABLE (dla zapytań do odczytu). Ale nie znam wszystkich szczegółów.
Czy wykonujesz tę operację intensywnie i przy dużym obciążeniu? –
@Bencaine Czy to ma znaczenie? Mam na myśli to, jak często będziesz tego potrzebować. Prawie nigdy, prawda? – Strawberry
Zmierz to i dowiedz się ... –