INFORMATION_SCHEMA 데이터베이스에서 색인을 추출한 다음 다른 데이터베이스에 색인을 추가 할 수는 있지만 매우 쉽지는 않습니다. 이를 이미 없으면
이 (배포에 사용되는 저장 프로 시저의 코드) 당신에게 예를 제공하기 위해, 이것은 고유 키를 추가
if not exists (select * from information_schema.KEY_COLUMN_USAGE
where table_schema = 'database_name'
and table_name='your_table'
and constraint_name ='key_name')
then
alter table your_table add unique key `key_name` ('column_name');
end if;
당신은 기본적으로 당신이 INFORMATION_SCHEMA에 필요한 무엇이든 찾을 수 있습니다. 나는이 모든 색인을 동적으로 검사하는 코드를 작성할 수 있다고 믿지만, 쉬운 지 확실하지 않습니다.
UPDATE : 당신이 MaasSql의 대답에서 제공하는 링크에서 볼 수
또한, show index from database.table
를 사용할 수 있습니다. 그런 다음 결과를 반복하고 데이터베이스에없는 경우 각 색인을 추가하십시오.
또는 당신이 시도 할 수 있습니다 :
if not exists (select * from information_schema.STATISTICS
where table_schema = 'database_name'
and table_name='table_name'
and index_name ='key_name')
then
...
end if;
당신이 당신이 무엇을 원하는 것을 확실합니까? 인덱스는 대개 데이터가 추가 될 때 즉시 생성됩니다. 그것들은 테이블의 데이터와 강하게 묶여 있기 때문에 할 수 있다고해도 한 DB에서 다른 DB로 인덱스를 복사하는 용도는 무엇인지 알 수 없습니다. – Mike
인덱스 데이터를 추출하는 것이 아니라 인덱스 정의를 추출하는 것입니다. 예를 들어, mysqldump --no-data는 인덱스 명령문을 포함한 모든 명령문을 내 보냅니다. 내 컴퓨터에 PowerDesigner가 설치되어 있으므로 색인을 검색 할 수있는 다른 방법이 있습니다. – pascal
@Mike : 예제 출력을 보려면 편집 된 질문을 참조하십시오. – Leo