2017-12-12 21 views
0

: 이것은 여러 줄로 마이그레이션을 생성합니다레일 마이그레이션, 어떻게 배치 모드에서 테이블에 여러 열을 추가하는 난이 할 수있는 기존 테이블에 여러 열을 추가 할

rails g migration AddColumnsToUser col1:integer col2:integer .. etc. 

을 :

def change 
    add_column :users, :col1, :integer 
    add_column :users, :col2, :integer 
end 
백엔드 DB에 여러 alter table 명령으로 변환됩니다

:

ALTER TABLE users ADD COLUMN col1 SMALLINT(6) NOT NULL; 
ALTER TABLE users ADD COLUMN col2 SMALLINT(6) NOT NULL; 

큰 테이블을 다루는 경우, 각 alter table은 MySQL에서 더 적은 시간이 걸릴 것입니다. 왜냐하면 백엔드 엔진이 테이블의 복제본을 생성하고 값 비싼 프로세스를 많이 수행하기 때문입니다. 그리고이 모든 작업은 추가하려는 각 열에 대해 수행해야합니다.

그래서, 내 질문은, 내가 같이, 단 하나에 모든 add_column 문장이 너무 결과가 배치 모드에서 alter table 될 것입니다 집계 할 수있는 방법입니다 :

ALTER TABLE users 
    ADD COLUMN col1 SMALLINT(6) NOT NULL, 
    ADD COLUMN col2 SMALLINT(6) NOT NULL; 

답변

0

여러 문에서도 또는 사용자 지정 SQL을 원하는 경우 다음과 같이하십시오.

execute <<-SQL 
    ALTER TABLE users 
    ADD COLUMN col1 SMALLINT(6) NOT NULL, 
    ADD COLUMN col2 SMALLINT(6) NOT NULL; 
SQL