Normalement, il semblerait que le loas data infile ne crée pas les index en cours d'import, mais uniquement à la fin :
If you use LOAD DATA INFILE on an empty MyISAM table, all non-unique indexes are created in a separate batch (as for REPAIR TABLE). Normally, this makes LOAD DATA INFILE much faster when you have many indexes. In some extreme cases, you can create the indexes even faster by turning them off with ALTER TABLE ... DISABLE KEYS before loading the file into the table and using ALTER TABLE ... ENABLE KEYS to re-create the indexes after loading the file. See Section 7.2.19, “Speed of INSERT Statements”.
http://dev.mysql.com/doc/refman/5.1/en/load-data.html
De plus, un index n'est pas un simple fichier texte avec une correspondance (valeur, n° de ligne). C'est un fichier avec une organisation de type arbre (généralement) qui permet d'améliorer l'accès aux données. Si ton index est construit au fur et à mesure, il est recalculé à chaque donnée importée, des branches sont créées, d'autres sont déplacées, en tenant compte de la structure précédente et de la valeur importée. Beaucoup de travail inutile et un arbre pas forcément bien structuré.
Et enfin, il vaut mieux une seule opération d'indexation que 7 millions : cela évite quelques millions d'écriture sur le disque.
Re-create the indexes with myisamchk -rq /path/to/db/tbl_name. This creates the index tree in memory before writing it to disk, which is much faster that updating the index during LOAD DATA INFILE because it avoids lots of disk seeks. The resulting index tree is also perfectly balanced.
http://dev.mysql.com/doc/refman/5.1/en/ ... speed.html
Je te conseillerais de créer tes index uniquement à la fin. Mais là comme pour le reste, je pense qu'un test avec un chrono dans la main sera le meilleur juge.