티스토리 뷰

프로젝트를 하면서 성능 이슈 및 편의성을 위해서 외래키를 삭제하기로 결정하였다.

그와 관련해서 필요한 쿼리들을 모아보았다.

외래키 삭제, 생성 구문을 생성해주는 쿼리들로 간편하게 삭제해보자.

 

외래키 조회

SELECT 
    TABLE_NAME, 
    CONSTRAINT_NAME 
FROM 
    INFORMATION_SCHEMA.KEY_COLUMN_USAGE 
WHERE 
    TABLE_SCHEMA = 'cheonil' 
    AND REFERENCED_TABLE_NAME IS NOT NULL;

외래키 삭제 구문 생성

SELECT 
    CONCAT('ALTER TABLE ', TABLE_NAME, ' DROP FOREIGN KEY ', CONSTRAINT_NAME, ';') AS drop_query
FROM 
    INFORMATION_SCHEMA.KEY_COLUMN_USAGE 
WHERE 
    TABLE_SCHEMA = 'cheonil'
    AND REFERENCED_TABLE_NAME IS NOT NULL;

외래키 인덱스 생성 구문

SELECT 
    CONCAT('CREATE INDEX idx_', COLUMN_NAME, ' ON ', TABLE_NAME, '(', COLUMN_NAME, ');') AS create_index_query
FROM 
    INFORMATION_SCHEMA.KEY_COLUMN_USAGE 
WHERE 
    TABLE_SCHEMA = 'cheonil'
    AND REFERENCED_TABLE_NAME IS NOT NULL;

 

댓글