It is possible to create multiple indexes on a table with
      one ALTER TABLE command.  This is relatively
      efficient, because the clustered index of the table needs to be
      scanned only once (although the data is sorted separately for each
      new index). For example:
    
CREATE TABLE T1(A INT PRIMARY KEY, B INT, C CHAR(1)) ENGINE=InnoDB; INSERT INTO T1 VALUES (1,2,'a'), (2,3,'b'), (3,2,'c'), (4,3,'d'), (5,2,'e'); COMMIT; ALTER TABLE T1 ADD INDEX (B), ADD UNIQUE INDEX (C);
The above commands will create table T1
    with the clustered index (primary key) on column
    A, insert several rows, and then build two new
    indexes on columns B and C.
    If there were many rows inserted into T1 before
    the ALTER TABLE command, this approach would be
    much more efficient than creating the table with all its indexes
    before loading the data.
You may also create the indexes one at a time, but then the
    clustered index of the table is scanned (as well as sorted) once
    for each CREATE INDEX command.  Thus, the
    following commands are not as efficient as the ALTER TABLE
    command above, even though neither requires
    recreating the clustered index for table
    T1.
CREATE INDEX B ON T1 (B); CREATE UNIQUE INDEX C ON T1 (C);
Dropping indexes in the InnoDB Plugin does not require any
    copying of table data. Thus, you can equally quickly drop multiple
    indexes with a single ALTER TABLE command or
    multiple DROP INDEX commands:
ALTER TABLE T1 DROP INDEX B, DROP INDEX C;
or
DROP INDEX B ON T1; DROP INDEX C ON T1;
Restructuring the clustered index in InnoDB always
    requires copying the data in the table.  For example, if you
    create a table without a primary key, InnoDB chooses one for
    you, which may be the first UNIQUE key defined
    on NOT NULL columns, or a system-generated key.
    Defining a PRIMARY KEY later causes the data
    to be copied, as in the following example:
CREATE TABLE T2 (A INT, B INT) ENGINE=InnoDB; INSERT INTO T2 VALUES (NULL, 1); ALTER TABLE T2 ADD PRIMARY KEY (B);
Note that when you create a UNIQUE or
    PRIMARY KEY index, InnoDB must do some extra
    work.  For UNIQUE indexes, InnoDB checks
    that the table contains no duplicate values for the key.  For a
    PRIMARY KEY index, InnoDB also
    checks that none of the PRIMARY KEY columns
    contains a NULL.  It is best to define the
    primary key when you create a table, so you need not rebuild the
    table later.
This is the User’s Guide for InnoDB Plugin 1.0.6 for MySQL 5.1, generated on March 4, 2010 (rev 673:680M).

