CREATE [UNIQUE|FULLTEXT|SPATIAL] INDEXindex_name[USINGindex_type] ONtbl_name(index_col_name,...)index_col_name:col_name[(length)] [ASC | DESC]
        En MySQL 5.0, CREATE INDEX se mapea a un
        comando ALTER TABLE para crear índices.
        Consulte Sección 13.1.2, “Sintaxis de ALTER TABLE”.
      
        Normalmente, crea todos los índices en una tabla cuando se crea
        la propia tabla con CREATE TABLE. Consulte
        Sección 13.1.5, “Sintaxis de CREATE TABLE”. CREATE INDEX
        le permite añadir índices a tablas existentes.
      
        Una lista de columnas de la forma
        (col1,col2,...) crea un índice de múltiples
        columnas. Los valores de índice se forman al concatenar los
        valores de las columnas dadas.
      
        Para columnas CHAR y
        VARCHAR, los índices pueden crearse para que
        usen sólo parte de una columna, usando
        col_name(length)length caracteres de cada valor de la
        columna. BLOB t TEXT
        pueden indexarse, pero se debe dar una
        longitud de prefijo.
      
        El comando mostrado aquí crea un índice usando los primeros 10
        caracteres de la columna name :
      
CREATE INDEX part_of_name ON customer (name(10));
        Como la mayoría de nombres usualmente difieren en los primeros
        10 caracteres, este índice no debería ser mucho más lento que
        un índice creado con la columna name entera.
        Además, usar columnas parcialmente para índices puede hacer un
        fichero índice mucho menor, que puede ahorrar mucho espacio de
        disco y además acelarar las operaciones
        INSERT .
      
        Los prefijos pueden tener una longitud de hasta 255 bytes. Para
        tablas MyISAM y InnoDB en
        MySQL 5.0, pueden tener una longitud de hasta 1000 bytes . Tenga
        en cuenta que los límites de los prefijos se miden en bytes,
        mientras que la longitud de prefijo en comandos CREATE
        INDEX se interpreta como el número de caracteres.
        Tenga esto en cuenta cuando especifique una longitud de prefijo
        para una columna que use un conjunto de caracteres de múltiples
        bytes.
      
En MySQL 5.0:
              Puede añadir un índice en una columna que puede tener
              valores NULL sólo si está usando
              MyISAM, InnoDB, o
              BDB .
            
              Puede añadir un índice en una columna
              BLOB o TEXT sólo si
              está usando el tipo de tabla MyISAM,
              BDB, o InnoDB .
            
        Una especificación index_col_name
        puede acabar con ASC o
        DESC. Estas palabras se permiten para
        extensiones futuras para especificar almacenamiento de índice
        ascendente o descendente. Actualmente se parsean pero se
        ignoran; los valores de índice siempre se almacenan en orden
        ascendente.
      
        En MySQL 5.0, algunos motores le permiten especificar un tipo de
        índice cuando se crea un índice. La sintaxis para el
        especificador index_type es
        USING .
        Los valores type_nametype_name posibles
        soportados por distintos motores se muestran en la siguiente
        tabla. Donde se muestran múltiples tipos de índice , el
        primero es el tipo por defecto cuando no se especifica
        index_type .
      
| Motor de almacenamiento | Tipos de índice permitidos | 
| MyISAM | BTREE | 
| InnoDB | BTREE | 
| MEMORY/HEAP | HASH,BTREE | 
Ejemplo:
CREATE TABLE lookup (id INT) ENGINE = MEMORY; CREATE INDEX id_index USING BTREE ON lookup (id);
        TYPE 
        puede usarse como sinónimo de type_nameUSING
         para especificar
        un tipo de índice. Sin embargo, type_nameUSING es la
        forma preferida. Además, el nombre de índice que precede el
        tipo de índice en la especificación de la sintaxis de índice
        no es opcional con TYPE. Esto es debido a
        que, en contra de USING,
        TYPE no es una palabra reservada y se
        interpreta como nombre de índice.
      
Si especifica un tipo de índice que no es legal para un motor de almacenamiento, pero hay otro tipo de índice disponible que puede usar el motor sin afectar los resultados de la consulta, el motor usa el tipo disponible.
Para más información sobre cómo MySQL usa índices, consulte Sección 7.4.5, “Cómo utiliza MySQL los índices”.
        Índices FULLTEXT en MySQL 5.0 puede indexar
        sólo columnas CHAR,
        VARCHAR, y TEXT , y sólo
        en tablas MyISAM . Consulte
        Sección 12.7, “Funciones de búsqueda de texto completo (Full-Text)”.
      
        Índices SPATIAL en MySQL 5.0 puede indexar
        sólo columnas espaciales, y sólo en tablas
        MyISAM . Los tipo de columna espaciales se
        describen en Capítulo 18, Extensiones espaciales de MySQL.
      
Ésta es una traducción del manual de referencia de MySQL, que puede encontrarse en dev.mysql.com. El manual de referencia original de MySQL está escrito en inglés, y esta traducción no necesariamente está tan actualizada como la versión original. Para cualquier sugerencia sobre la traducción y para señalar errores de cualquier tipo, no dude en dirigirse a mysql-es@vespito.com.

