Fach: Informatik - Jan-Gerd Tenberge
Fach: Informatik - Jan-Gerd Tenberge
Fach: Informatik - Jan-Gerd Tenberge
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