[+/-]
        Die Indexverschmelzungsmethode wird
        verwendet, um Datensätze mit mehreren
        range-Scans abzurufen und deren Ergebnisse zu
        einem Ergebnis zu verschmelzen. Die Verschmelzung kann Unions,
        Schnittmengen oder Schnittmengen-Unions der zugrunde liegenden
        Scans erzeugen.
      
        In der Ausgabe von EXPLAIN erscheint die
        Indexverschmelzungsmethode als index_merge in
        der type-Spalte. In diesem Fall enthält die
        Spalte key eine Liste der verwendeten
        Indizes, und key_len enthält eine Liste der
        längsten Schlüsselteile für diese Indizes.
      
Ein paar Beispiele:
SELECT * FROMtbl_nameWHEREkey_part1= 10 ORkey_part2= 20; SELECT * FROMtbl_nameWHERE (key_part1= 10 ORkey_part2= 20) ANDnon_key_part=30; SELECT * FROM t1, t2 WHERE (t1.key1IN (1,2) OR t1.key2LIKE 'value%') AND t2.key1=t1.some_col; SELECT * FROM t1, t2 WHERE t1.key1=1 AND (t2.key1=t1.some_colOR t2.key2=t1.some_col2);
        Die Indexverschmelzungsmethode umfasst mehrere
        Zugriffsalgorithmen (diese können dem Feld
        Extra in der Ausgabe von
        EXPLAIN entnommen werden):
      
            Using intersect(…)
          
            Using union(…)
          
            Using sort_union(…)
          
Die folgenden Abschnitte beschreiben diese Methoden im Detail.
Hinweis: Der Optimierungsalgorithmus für die Indexverschmelzung weist die folgenden bekannten Defizite auf:
Wenn ein Bereichsscan für einen Schlüssel möglich ist, wird eine Indexverschmelzung nicht in Betracht gezogen. Betrachten Sie etwa folgende Abfrage:
SELECT * FROM t1 WHERE (goodkey1 < 10 OR goodkey2 < 20) AND badkey < 30;
Hierbei sind zwei Pläne möglich:
                ein Indexverschmelzungsscan unter Verwendung der
                Bedingung (goodkey1 < 10 OR goodkey2 <
                20)
              
                ein Bereichsscan unter Verwendung der Bedingung
                badkey < 30
              
            Der Optimierer allerdings zieht nur den zweiten Plan in
            Betracht. Wenn Sie dies nicht wollen, können Sie mit
            IGNORE INDEX oder FORCE
            INDEX dafür sorgen, dass der Optimierer auch die
            Indexverschmelzung berücksichtigt. Die folgenden beiden
            Abfragen werden unter Verwendung der Indexverschmelzung
            ausgeführt:
          
SELECT * FROM t1 FORCE INDEX(goodkey1,goodkey2) WHERE (goodkey1 < 10 OR goodkey2 < 20) AND badkey < 30; SELECT * FROM t1 IGNORE INDEX(badkey) WHERE (goodkey1 < 10 OR goodkey2 < 20) AND badkey < 30;
            Wenn Ihre Abfrage eine komplexe
            WHERE-Klausel mit tiefer
            AND- oder
            OR-Verschachtelung enthält und MySQL
            nicht den optimalen Plan auswählt, versuchen Sie die Terme
            mithilfe der folgenden Identitätsgesetze zu verteilen:
          
(xANDy) ORz= (xORz) AND (yORz) (xORy) ANDz= (xANDz) OR (yANDz)
Die Indexverschmelzung ist nicht für Volltextindizes einsetzbar. Wir beabsichtigen, dies in einem zukünftigen MySQL-Release zu ändern.
Die Auswahl zwischen verschiedenen möglichen Varianten der Indexverschmelzungsmethode und anderen Zugriffsmethoden basiert auf Kostenschätzungen der verschiedenen verfügbaren Optionen.
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.

