CREATE [UNIQUE|FULLTEXT|SPATIAL] INDEXindex_name[USINGindex_type] ONtbl_name(index_col_name,...) [WITH PARSERparser_name]index_col_name:col_name[(length)] [ASC | DESC]
        CREATE INDEX wird mit einer ALTER
        TABLE-Anweisung verknüpft, um Indizes zu erstellen.
        Siehe auch Abschnitt 13.1.2, „ALTER TABLE“. Weitere Informationen
        dazu, wie MySQL Indizes verwendet, finden Sie in
        Abschnitt 7.4.5, „Wie MySQL Indizes benutzt“.
      
        Normalerweise erstellen Sie alle Indizes für eine Tabelle zu
        dem Zeitpunkt, an dem Sie auch die Tabelle selbst mit
        CREATE TABLE anlegen. Siehe auch
        Abschnitt 13.1.5, „CREATE TABLE“. CREATE INDEX
        erlaubt Ihnen das Hinzufügen von Indizes zu vorhandenen
        Tabellen.
      
        Eine Spaltenliste in der Form (col1,col2,...)
        erstellt einen mehrspaltigen Index. Indexwerte werden gebildet,
        indem die Werte der betreffenden Spalten verkettet werden.
      
        Bei CHAR-, VARCHAR-,
        BINARY- und
        VARBINARY-Spalten können Indizes erstellt
        werden, die nur einen Teil einer Spalte verwenden. Hier
        verwenden Sie die Syntax
        col_name(length)length
        Zeichen jedes Spaltenwerts bei CHAR- und
        VARCHAR-Spalten sowie die ersten
        length Bytes jedes Spaltenwerts bei
        BINARY- und
        VARBINARY-Spalten. BLOB-
        und TEXT-Spalten lassen sich auch indizieren,
        aber eine Präfixlänge muss angegeben
        werden.
      
        Die folgende Anweisung erstellt einen Index unter Verwendung der
        ersten zehn Zeichen der Spalte name:
      
CREATE INDEX part_of_name ON customer (name(10));
        Wenn die ersten zehn Zeichen aller Namen in der Spalte sich
        durchgehend unterscheiden, dann sollte dieser Index nicht viel
        langsamer sein als ein Index, der aus der gesamten Spalte
        name erstellt wurde. Auch die Verwendung von
        Teilspalten für Indizes kann die Indexdatei wesentlich kleiner
        machen, wodurch sich viel Festplattenspeicher sparen lässt und
        INSERT-Operationen unter Umständen auch
        beschleunigt werden können.
      
        Präfixe können bis 1.000 Byte lang sein (767 Byte bei
        InnoDB-Tabellen). Beachten Sie, dass
        Präfixbeschränkungen in Byte angegeben werden, wohingegen die
        Präfixlänge in CREATE INDEX-Anweisungen bei
        nichtbinären Datentypen (CHAR,
        VARCHAR, TEXT) als Anzahl
        der Zeichen interpretiert wird. Dies muss bei der Angabe einer
        Präfixlänge für eine Spalte berücksichtigt werden, die einen
        Multibytezeichensatz verwendet.
      
In MySQL 5.1 können Sie
            einen Index für eine Spalte, die
            NULL-Werte enthalten kann, nur dann
            hinzufügen, wenn Sie die Speicher-Engines
            MyISAM, InnoDB,
            BDB oder MEMORY
            verwenden,
          
            einen Index für eine BLOB- oder
            TEXT-Spalte nur dann hinzufügen, wenn
            Sie die Speicher-Engines MyISAM,
            BDB oder InnoDB
            verwenden.
          
        Eine index_col_name-Definition kann
        auf ASC oder DESC enden.
        Diese Schlüsselwörter sind für zukünftige Erweiterungen
        zulässig, um eine Speicherung der Indexwerte in auf- oder
        absteigender Reihenfolge festzulegen. Zurzeit werden sie zwar
        erkannt, aber ignoriert – Indexwerte werden immer in
        aufsteigender Reihenfolge gespeichert.
      
        Einige Speicher-Engines gestatten bei der Erstellung eines
        Indexes die Angabe eines Indextyps. Die Syntax für die
        Konfigurationsangabe index_type
        lautet USING
        . Zulässige Werte
        für type_nametype_name, die von den
        verschiedenen Speicher-Engines unterstützt werden, sind in der
        folgenden Tabelle aufgelistet. Sind mehrere Indextypen
        aufgeführt, so wird der erste standardmäßig verwendet, wenn
        keine Angabe für index_type
        vorhanden ist.
      
| Speicher-Engine | Zulässige Indextypen | 
| MyISAM | BTREE | 
| InnoDB | BTREE | 
| MEMORY/HEAP | HASH,BTREE | 
Ein paar Beispiele:
CREATE TABLE lookup (id INT) ENGINE = MEMORY; CREATE INDEX id_index USING BTREE ON lookup (id);
        TYPE 
        kann als Synonym für type_nameUSING
         benutzt werden,
        um einen Indextyp anzugeben. Allerdings ist
        type_nameUSING die bevorzugte Form. Ferner ist der
        Indexname, der in der Syntax zur Indexspezifikation vor dem
        Indextyp steht, bei TYPE nicht optional:
        Anders als USING ist TYPE
        kein reserviertes Wort und wird infolgedessen nicht als
        Indexname interpretiert.
      
Wenn Sie einen Indextyp angeben, der für eine gegebene Speicher-Engine nicht zulässig ist, aber ein anderer Indextyp vorhanden ist, den die Engine verwenden kann, ohne dass hiervon Abfrageergebnisse betroffen wären, dann verwendet die Engine diesen verfügbaren Typ.
        FULLTEXT-Indizes werden nur für
        MyISAM-Tabellen unterstützt und dürfen nur
        CHAR-, VARCHAR- und
        TEXT-Spalten enthalten. Siehe auch
        Abschnitt 12.7, „MySQL-Volltextsuche“. Eine WITH
        PARSER-Klausel kann angegeben werden, um ein
        Parser-Plug-In mit dem Index zu verknüpfen, wenn
        Volltextindizierungs- und Suchoperationen besondere Maßnahmen
        erfordern. Diese Klausel ist nur für
        FULLTEXT-Indizes zulässig. Informationen zur
        Erstellung von Plug-Ins finden Sie in
        Abschnitt 26.2, „Die MySQL-Plug-In-Schnittstelle“.
      
        SPATIAL-Indizes werden nur für
        MyISAM-Tabellen unterstützt und dürfen nur
        raumbezogene Spalten enthalten, die als NOT
        NULL definiert sind.
        Kapitel 18, Raumbezogene Erweiterungen in MySQL, beschreibt raumbezogene
        Datentypen.
      
Dies ist eine Übersetzung des MySQL-Referenzhandbuchs, das sich auf dev.mysql.com befindet. Das ursprüngliche Referenzhandbuch ist auf Englisch, und diese Übersetzung ist nicht notwendigerweise so aktuell wie die englische Ausgabe. Das vorliegende deutschsprachige Handbuch behandelt MySQL bis zur Version 5.1.

