Limit (SQL)
Um Abfragen zu beschleunigen kann man eine maximale Anzahl an Ergebnissen festlegen, somit hört das DBMS nach X Werten auf nach weiteren zu suchen.
Inhaltsverzeichnis
MySQL
Unter MySQL gibt es für diesen Fall die Anweisung LIMIT, diese hat zwei Parameter, wobei der letzte optional ist. <code=sql>SELECT * from testtable WHERE id = 1 LIMIT 1</code=sql> Diese Abfrage wählt nur ein Element aus, auch wenn es mehrere Elemente mit der ID 1 geben würde, außerdem wird direkt nach der 1. Abfrage aufgehört nach weiteren zu suchen.
<code=sql>SELECT * FROM testtable WHERE id >1 ORDER BY id LIMIT 10,30</code=sql> Diese Abfrage wählt 10 Elemente aus, jedoch werden diese nicht vom Anfang genommen, sondern erst ab dem 30.Element. Dies bedeutet wenn die id von 1-100 eindeutig durchnummeriert ist, werden die Elemente 30-40 ausgegeben.
PostgreSQL
Unter PostgreSQL gibt es ähnlich wie bei MySQL die Anweisung LIMIT, auch mit den beiden Parametern, jedoch wird der zweite Parameter mit dem Schlüsselwort OFFSET eingetragen. <code=sql>SELECT * from testtable WHERE id = 1 LIMIT 1</code=sql> Diese Abfrage wählt nur ein Element aus, auch wenn es mehrere Elemente mit der ID 1 geben würde, außerdem wird direkt nach der 1. Abfrage aufgehört nach weiteren zu suchen.
<code=sql>SELECT * FROM testtable WHERE id >1 ORDER BY id LIMIT 10 OFFSET 30</code=sql> Diese Abfrage wählt 10 Elemente aus, jedoch werden diese nicht vom Anfang genommen, sondern erst ab dem 30.Element. Dies bedeutet wenn die id von 1-100 eindeutig durchnummeriert ist, werden die Elemente 30-40 ausgegeben.
Oracle
Unter Oracle gibt es für diese Art der Anweisungen eine weitere Spalte, diese heißt ROWNUM. Sie enthält die Zeilennummer, so dass man mit dieser wie mit jeder anderen Spalte arbeiten kann. <code=sql>SELECT * from testtable WHERE id = 1 AND rownum = 1</code=sql> Diese Abfrage wählt nur ein Element aus, auch wenn es mehrere Elemente mit der ID 1 geben würde, außerdem wird direkt nach der 1. Abfrage aufgehört nach weiteren zu suchen.
<code=sql>SELECT * FROM testtable WHERE id > 1 AND rownum BETWEEN 30 AND 40 ORDER BY id </code=sql> Diese Abfrage wählt die Elemente 30-40 aus, ähnlich der LIMIT 10,30 Abfrage aus MySQL.
MSSQL
MSSQL besitzt die Anweisung TOP für die Begrenzung der Ergebnise. Unter SQL CE existiert die Funktion nicht, es gibt auch keine Alternative. <code=sql>SELECT TOP 10 * FROM testtable WHERE id = 1</code=sql>
Einen Offset oder ähnliches wird von MSSQL nicht unterstützt oder angeboten.
DB2
DB2 hat für die die Begrenzung der Ergebnisse die Anweisung FETCH FIRST X ROWS ONLY.
<code=sql>SELECT * FROM table FETCH FIRST 10 ROWS ONLY;</code=sql>