15.07.2013 Aufrufe

Fach: Informatik - Jan-Gerd Tenberge

Fach: Informatik - Jan-Gerd Tenberge

Fach: Informatik - Jan-Gerd Tenberge

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

mysql> select benutzer,max(gehalt) AS summe from benutzer<br />

group by benutzer HAVING summe>10;<br />

• SQL_SMALL_RESULT, SQL_BIG_RESULT, SQL_BUFFER_RESULT, STRAIGHT_JOIN<br />

und HIGH_PRIORITY sind MySQL Erweiterungen zu ANSI-SQL92.<br />

• HIGH_PRIORITY gibt dem SELECT höhere Priorität als einem Statement, das eine<br />

Tabelle aktualisiert. Sie sollten das nur für Anfragen benutzen, die sehr schnell<br />

sind und sofort durchgeführt werden müssen. Eine SELECT HIGH_PRIORITY-<br />

Anfrage läuft, wenn die Tabelle eine Lese-Sperre hat, selbst wenn es ein Update-<br />

Statement gibt, das darauf wartet, dass die Tabelle freigegeben wird.<br />

• SQL_BIG_RESULT kann bei GROUP BY oder DISTINCT benutzt werden, um dem<br />

Optimierer mitzuteilen, dass das Ergebnis sehr viele Zeilen haben wird. In<br />

diesem Fall benutzt MySQL bei Bedarf direkt Festplatten-basierende temporäre<br />

Tabellen. Ausserdem bevorzugt MySQL in diesem Fall Sortieren vor dem<br />

Anlegen einer temporären Tabelle mit einem Schlüssel auf den GROUP BY-<br />

Elementen.<br />

• Wenn Sie GROUP BY benutzen, werden die Ausgabe-Zeilen gemäß dem GROUP<br />

BY sortiert, als hätten Sie ein ORDER BY für alle Felder im GROUP BY angegeben.<br />

MySQL hat GROUP BY erweitert, so dass Sie dafür auch ASC und DESC angeben<br />

können:<br />

• SELECT a,COUNT(b) FROM tabelle GROUP BY a DESC<br />

• MySQL hat die Benutzung von GROUP BY erweitert, um es Ihnen zu gestatten,<br />

auch Felder auszuwählen, die nicht in der GROUP BY-Klausel erwähnt wurden.<br />

Wenn Sie nicht die Ergebnisse erhalten, die Sie von Ihrer Anfrage erwarten,<br />

lesen Sie bitte die GROUP BY-Beschreibung.<br />

• SQL_BUFFER_RESULT erzwingt, dass das Ergebnis in eine temporäre Tabelle<br />

geschrieben wird. Das hilft MySQL, frühzeitig Tabellensperren aufzuheben, und<br />

hilft in Fällen, in denen es lange dauert, das Ergebnis an den Client zu senden.<br />

• SQL_SMALL_RESULT, eine MySQL-spezifische Option, kann bei GROUP BY oder<br />

DISTINCT benutzt werden, um dem Optimierer mitzuteilen, dass der<br />

Ergebnissatz klein sein wird. In diesem Fall benutzt MySQL schnelle temporäre<br />

Tabellen, um die Ergebnistabelle zu speichern, anstatt Sortieren zu benutzen. In<br />

MySQL-Version 3.23 sollte das normalerweise nicht benötigt werden.<br />

• STRAIGHT_JOIN zwingt den Optimierer, Tabellen in der Reihenfolge zu<br />

verknüpfen, in der sie in der FROM-Klausel aufgelistet sind. Sie können das<br />

benutzen, um die Geschwindigkeit einer Anfrage zu erhöhen, wenn der<br />

Optimierer Tabellen in nicht optimaler Reihenfolge verknüpft. See<br />

Abschnitt 6.2.1, „EXPLAIN-Syntax (Informationen über ein SELECT erhalten)“.<br />

• Die LIMIT-Klausel wird benutzt, um die Anzahl von Zeilen, die vom SELECT-<br />

Statement zurückgegeben werden, zu beschränken. LIMIT erwartet ein oder zwei<br />

numerische Argumente.<br />

Wenn zwei Argumente angegeben sind, legt das erste den Offset der ersten Zeile<br />

fest, die zurückgegeben wird, und das zweite gibt die maximale Anzahl von<br />

Zeilen an, die zurückgegeben werden. Der Offset der anfänglichen Zeile ist 0<br />

(nicht 1):<br />

mysql> select * from tabelle LIMIT 5,10; # Zeilen 6 bis 15<br />

zurückgeben<br />

28

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!