2016-11-09 1 views
1

큰 응용 프로그램에서 여러 테이블의 이름을 바꿉니다. 응용 프로그램의 일부분이 업데이트하는 데 오래 걸리므로 이전 테이블 이름을 유지해야하므로 가동 중지 시간이 없습니다. 이 문서 (http://dev.mysql.com/doc/refman/5.7/en/view-updatability.html) 내가 삽입 및 업데이트를 할 수 있어야하고,이 뷰 삭제됩니다에 따르면MySQL 레거시 코드보기를 유지하면서 테이블 이름 바꾸기

create view old_table_name as select a as x, b as y, c as z from new_table_name; 

:

내 생각은 다음과 같이 새 테이블에서 모든 선택하는 뷰를 생성하는 것입니다 .

제 질문은이 새로운 테이블을 사용하기 위해 모든 레거시 코드를 마이그레이션 할 수있을 때까지 잠시 동안의 임시 해결책이라고 생각합니다.이 문제를 해결할 수 있습니까? 조인과 사물 모두에서 성능이 비슷합니까? 이 방법으로 복잡한 업데이트 또는 삭제 (조인 포함)를 수행 할 수 있습니까?

이 문제에 접근하는 더 좋은 방법이 있습니까?

미리 도움을 주셔서 감사합니다.

답변

1

성능은 기본적으로 동일해야합니다.

리터럴 만 리턴하는 집합 함수/group having/distinct, limit, union, scalar subqueries 및 views가없는 간단한 뷰의 경우 MySQL은 기본적으로 MERGE 알고리즘을 사용하므로 효과적으로 뷰를 참조하는 쿼리를 다시 생성합니다. 기본 테이블의 열을 직접 사용한 경우.

설명서의 View Algorithms을 참조하십시오.

Determining what algorithm MySQL view is using도 유익 할 수 있습니다.