HANDLERtbl_nameOPEN [ ASalias] HANDLERtbl_nameREADindex_name{ = | >= | <= | < } (value1,value2,...) [ WHEREwhere_condition] [LIMIT ... ] HANDLERtbl_nameREADindex_name{ FIRST | NEXT | PREV | LAST } [ WHEREwhere_condition] [LIMIT ... ] HANDLERtbl_nameREAD { FIRST | NEXT } [ WHEREwhere_condition] [LIMIT ... ] HANDLERtbl_nameCLOSE
        Die Anweisung HANDLER bietet direkten Zugriff
        auf die Schnittstellen der Speicher-Engine einer Tabelle. Sie
        steht für MyISAM- und
        InnoDB-Tabellen zur Verfügung.
      
        Die Anweisung HANDLER ... OPEN öffnet eine
        Tabelle und gestattet den Zugriff über nachfolgende
        HANDLER ... READ-Anweisungen. Dieses
        Tabellenobjekt wird nicht mit anderen Threads gemeinsam genutzt
        und wird erst geschlossen, wenn der Thread HANDLER ...
        CLOSE aufruft oder beendet wird. Wenn Sie die Tabelle
        unter Verwendung eines Alias öffnen, müssen nachfolgende
        Referenzierungen durch andere
        HANDLER-Anweisungen den Alias statt des
        Tabellennamens verwenden.
      
        Die erste HANDLER ... READ-Syntax holt einen
        Datensatz, bei dem der angegebene Index den übergebenen Werten
        entspricht und die WHERE-Bedingung erfüllt
        ist. Wenn Sie einen mehrspaltigen Index haben, geben Sie die
        Indexspaltenwerte als kommagetrennte Liste an. Entweder geben
        Sie Werte für alle Spalten im Index oder aber Werte für das
        links stehende Präfix der Indexspalten an. Angenommen, ein
        Index my_idx enthält drei Spalten namens
        col_a, col_b und
        col_c in genau dieser Reihenfolge. Die
        Anweisung HANDLER kann Werte für alle drei
        Spalten im Index oder für die Spalten in einem links stehenden
        Präfix angeben. Zum Beispiel:
      
HANDLER ... READ my_idx = (col_a_val,col_b_val,col_c_val) ... HANDLER ... READ my_idx = (col_a_val,col_b_val) ... HANDLER ... READ my_idx = (col_a_val) ...
        Um die HANDLER-Schnittstelle für die
        Referenzierung des Primärschlüssels einer Tabelle zu
        verwenden, setzen Sie den Bezeichner in Anführungszeichen
        (`PRIMARY`).
      
HANDLER tbl_name READ `PRIMARY` ...
        Die zweite HANDLER ... READ-Syntax holt aus
        der Tabelle einen Datensatz in der Indexreihenfolge, die der
        WHERE-Bedingung entspricht.
      
        Die dritte HANDLER ... READ-Syntax holt aus
        der Tabelle einen Datensatz in der natürlichen
        Datensatzreihenfolge, die der WHERE-Bedingung
        entspricht. Sie ist schneller als HANDLER
        , wenn ein
        vollständiger Tabellenscan gewünscht wird. Die natürliche
        Datensatzreihenfolge ist die Reihenfolge, in der die Datensätze
        in der Datendatei einer tbl_name READ
        index_nameMyISAM-Tabelle
        gespeichert sind. Diese Anweisung funktioniert auch bei
        InnoDB-Tabellen, aber das Konzept greift hier
        in Ermangelung einer separaten Datendatei nicht.
      
        Ohne eine LIMIT-Klausel holen alle Formen von
        HANDLER ... READ einen einzelnen Datensatz
        (sofern vorhanden). Um eine bestimmte Anzahl Datensätze
        zurückzugeben, fügen Sie eine LIMIT-Klausel
        ein. Sie hat dieselbe Syntax wie bei der
        SELECT-Anweisung. Siehe auch
        Abschnitt 13.2.7, „SELECT“.
      
        HANDLER ... CLOSE schließt eine Tabelle, die
        mit HANDLER ... OPEN geöffnet worden war.
      
        HANDLER ist eine etwas maschinennahe
        Anweisung. Sie bietet z. B. keine Konsistenz: HANDLER
        ... OPEN fertigt keine
        Momentaufnahme der Tabelle an und sperrt sie
        nicht. Das bedeutet, dass, nachdem eine
        HANDLER ... OPEN-Anweisung abgesetzt wurde,
        die Tabellendaten (vom aktuellen, aber auch von anderen Threads)
        modifiziert werden können und diese Änderungen dann für
        HANDLER ... NEXT- oder HANDLER ...
        PREV-Scans unter Umständen nur teilweise sichtbar
        sind.
      
        Es gibt eine Reihe von Gründen zur Verwendung der
        HANDLER-Schnittstelle anstelle einer normalen
        SELECT-Anweisung:
      
            HANDLER ist schneller als
            SELECT:
          
                Für HANDLER ... OPEN wird ein
                dediziertes Speicher-Engine-spezifisches Handler-Objekt
                reserviert. Das Objekt wird bei nachfolgenden
                HANDLER-Anweisungen für diese
                Tabelle wiederverwendet; es muss nicht jeweils neu
                initialisiert werden.
              
Der Analyseaufwand ist geringer.
Es ist kein zusätzlicher Aufwand für den Optimierer oder die Abfrageüberprüfung erforderlich.
Die Tabelle muss nicht zwischen zwei Handler-Anforderungen gesperrt werden.
                Die Handler-Schnittstelle muss keine konsistente Sicht
                der Daten bieten (Dirty Reads beispielsweise sind
                zulässig) – die Speicher-Engine kann also
                Optimierungen verwenden, die SELECT
                normalerweise nicht zulassen würde.
              
            Bei Anwendungen, die eine maschinennahe
            ISAM-artige Schnittstelle verwenden,
            erleichtert HANDLER deren Portierung auf
            MySQL.
          
            HANDLER erlaubt Ihnen das Durchlaufen
            einer Datenbank auf eine Weise, die mit
            SELECT – wenn überhaupt – nur sehr
            schwierig zu realisieren ist. Die
            HANDLER-Schnittstelle ist eine
            natürlicher anmutende Art der Datensicht, wenn Sie mit
            Anwendungen arbeiten, die eine interaktive
            Benutzeroberfläche für die Datenbank bereitstellen.
          
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.

