2014-04-24 13 views
5

Czy szybciej dodaje się lub upuszcza wiele kolumn w jednym zapytaniu, zamiast wykonywać zapytanie dla każdej kolumny? Na przykład: czy jest to:Czy zmiana wielu kolumn w tym samym zapytaniu jest szybsza?

ALTER TABLE t2 DROP COLUMN c, DROP COLUMN d; 

szybciej niż to?

ALTER TABLE t2 DROP COLUMN c; 
ALTER TABLE t2 DROP COLUMN d; 
+0

Czy wykonujesz tę operację intensywnie i przy dużym obciążeniu? –

+0

@Bencaine Czy to ma znaczenie? Mam na myśli to, jak często będziesz tego potrzebować. Prawie nigdy, prawda? – Strawberry

+1

Zmierz to i dowiedz się ... –

Odpowiedz

3

Tak, jest szybszy. Wystarczy wykonać jedno połączenie z interfejsem API bazy danych i trzeba tylko raz przeanalizować zapytanie.

Jednak dla zapytań ALTER TABLE wydajność zwykle nie jest problemem. Nie powinieneś robić tego często, tylko po przeprojektowaniu swojego schematu.

Ale jeśli na przykład twoje pytanie dotyczyło zapytań o numer: UPDATE, prawdopodobnie byłoby znaczące. Na przykład. należy zrobić:

UPDATE table 
SET col1 = foo, col2 = bar 
WHERE <condition>; 

zamiast

UPDATE table 
SET col1 = foo 
WHERE <condition>; 

UPDATE table 
SET col2 = bar 
WHERE <condition>; 
6

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.

Powiązane problemy