O InnoDB não tem uma otimização especial para criação de
          índices separados. Assim não há custo para exportar e
          importar a tabela e criar índices posteriormente. O modo mais
          rápido de se alterar uma tabela para InnoDB é fazer as
          inserções diretamente em uma tabela InnoDB, isto é, use
          ALTER TABLE ... TYPE=INNODB, ou crie uma
          tabela InnoDB vazia com definições idênticas e insira os
          registro com INSERT INTO ... SELECT * FROM
          ....
        
Para obter um melhor controle sobre o processo de inserção, pode ser bom inserir grandes tabelas em pedaços:
INSERT INTO newtable SELECT * FROM oldtable WHERE yourkey > something AND yourkey <= somethingelse;
Depois de todos os dados serem inseridos você pode renomear as tabelas.
Durante a canversão de tabelas grandes você deve configurar á área de buffer com um tamanho grande para reduzir a E/S de disco. Não deve ser maior que 80% da memória física. Você deve configurar o arquivo de log do InnoDB grande, assim como o buffer de log.
          Certifique-se de que você não irá ocupar todo o tablespace:
          tabelas InnoDB gasta muito mais espaço que tabelas MyISAM. Se
          um ALTER TABLE ficar sem espaço, ele irá
          iniciar um rollback, que pode levar horas se ele estiver no
          limite de disco. Para inserções, o InnoDB utiliza o buffer
          de inserção para fundir registros de índices secundários a
          índices em grupos. Isto economiza muito a E/S de disco. No
          rollback tal mecanismo não é usado e o rollback pode demorar
          30 vezes mais que a inserção.
        
          No caso de um rollback demorado, se você não tiver dados
          valiosos e seu banco de dados, é melhor que você mate o
          processo de banco de dados, delete todos os arquivos de dados
          e de log do InnoDB e todos os arquivos de tabela
          .frm e inicie o seu trabalho de novo, do
          que esperar que milhões de E/Ss de disoc de complete.
        
This is a translation of the MySQL Reference Manual that can be found at dev.mysql.com. The original Reference Manual is in English, and this translation is not necessarily as up to date as the English version.

