2014-04-15 4 views
0

MySQL 데이터베이스에 여러 테이블을 병합하는 몇 가지 MRG_MyISAM 테이블이 있습니다. 각 병합 테이블에 포함 된 테이블을 프로그래밍 방식으로 파악하고 싶습니다.MySQL 병합 테이블에 포함 된 테이블 찾기

내가 SHOW CREATE TABLE을 실행 한 다음 명세서의 UNION=(tbl1, tbl2) 부분을 구문 분석 할 수 있다는 것을 알았지 만 이는 약간 해킹 된 것처럼 보입니다. 더 좋은 방법이 있습니까? 이상적인 세계에서는

, 나는 이런 식으로 뭔가를 찾고 있어요 :

SELECT * FROM ?? WHERE merge_table = 'merge_table_1' 

각각 "merge_table_1"에 포함 된 테이블의 이름이 포함 된 행 반환 그 :

-------------- 
| table_name | 
-------------- 
| tbl1  | 
-------------- 
| tbl2  | 
-------------- 

답변

1

MERGE 테이블의 멤버를 나열하는 데이터가 INFORMATION_SCHEMA에 있다고 생각하지 않습니다.

응용 프로그램이 데이터베이스 서버의 데이터 디렉토리에 직접 액세스 할 수있는 경우 병합 테이블에 대해 .MRG 파일을 읽으면됩니다. 이 파일은 사람이 읽을 수있는 파일로, 병합 테이블과 다른 병합 테이블 옵션 만 나열합니다.

정말 더 이상 MERGE 테이블을 사용하지 않아야합니다. 훨씬 더 유연한 MySQL의 PARTITIONING 엔진을 사용해야합니다. 파티션 된 테이블을 사용하면 INFORMATION_SCHEMA.PARTITIONS 테이블을 쿼리하여 각 파티션에 대한 정보를 찾을 수 있습니다.

사실 MyISAM 테이블을 사용해서는 안됩니다. InnoDB는 확장 성이 뛰어나며 MyISAM은 ACID의 속성을 지원하지 않습니다.

+0

을 제공되는지 확인합니다. 슬프게도, 나는 문제의 DB에 대한 관리자가 아니며, 단지 그 일을해야만하는 사람입니다. – BringMyCakeBack

0

SHOW CREATE TABLE table_name; -이 당신에게 당신은 이노 및 파티셔닝에 합창단에 전파하고있는 정보