Вы можете извлечь индексы из базы данных 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:
Вы также можете использовать show index from database.table
, как вы можете видеть по ссылке, предоставленной ответом MaasSql. Затем зациклите результаты и добавьте каждый индекс, если его нет в базе данных.
Или вы можете попробовать это:
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;