반응형

# Adding multiple columns AFTER a specific column in MySQL (mysql 5.7.19)

 

after 를 사용하게되면 algorithm = copy로 처리하게되서 테이블의 용량에 따라 컬럼 추가시에는 성능이슈가 발생할 수도 있다.

 

예를 들어 테이블 TMP_LOAD_20201203에 x0 컬럼 뒤에 컬럼 5개를 추가한다고하면

#잘못된 예)
ALTER TABLE TESTDB.TMP_LOAD_20201203 ADD COLUMN x1 VARCHAR(8) DEFAULT NULL AFTER x0; 
ALTER TABLE TESTDB.TMP_LOAD_20201203 ADD COLUMN x2 VARCHAR(1) DEFAULT NULL AFTER x1; 
ALTER TABLE TESTDB.TMP_LOAD_20201203 ADD COLUMN x3 VARCHAR(1) DEFAULT NULL AFTER x2; 
ALTER TABLE TESTDB.TMP_LOAD_20201203 ADD COLUMN x4 VARCHAR(1) DEFAULT NULL AFTER x3; 
ALTER TABLE TESTDB.TMP_LOAD_20201203 ADD COLUMN x5 VARCHAR(1) DEFAULT NULL AFTER x4; 
// 컬럼 하나 추가할때마다 임시테이블을 만드는 작업을 하고 있어 느리다.

 

#수정 예)
ALTER TABLE TESTDB.TMP_LOAD_20201203 
ADD COLUMN x1 VARCHAR(8) DEFAULT NULL AFTER x0, 
ADD COLUMN x2 VARCHAR(1) DEFAULT NULL AFTER x1, 
ADD COLUMN x3 VARCHAR(1) DEFAULT NULL AFTER x2, 
ADD COLUMN x4 VARCHAR(1) DEFAULT NULL AFTER x3, 
ADD COLUMN x5 VARCHAR(1) DEFAULT NULL AFTER x4; 
// 임시테이블 한번만 만들고 나머지는 컬럼모두 추가~ 아래꺼가 훨씬 빠르다.

 

after column 을 쓰게되면 algorithm = inplace 를 사용할 수 없다. mysql 8에서도 맨뒤에 컬럼을 추가하는 경우를

제외하고는 instant를 쓸 수 없는 것으로 알고 있다.

컬럼 순서 재정렬 이슈.. 이번에 정리해두자.

 

끝~

 

참조 : stackoverflow.com/questions/17541312/adding-multiple-columns-after-a-specific-column-in-mysql

반응형
블로그 이미지

dung beetle

취미는 데이터 수집 직업은 MYSQL과 함께 일하는 DBA의 소소한 일상 이야기

,