

LIMIT et OFFSET
     LIMIT et OFFSET vous permettent de retrouver seulement
     une portion des lignes générées par le reste de la requête :
     
SELECTliste_selectionFROMexpression_table[ ORDER BY ...] [ LIMIT {nombre| ALL } ] [OFFSETnombre]
   Si un nombre limite est donné, pas plus que ce nombre de lignes ne sera renvoyé
   (mais peut-être moins si la requête récupère moins de lignes). LIMIT
   ALL revient à ne pas spécifier la clause LIMIT.
  
   OFFSET indique de passer ce nombre de lignes avant de renvoyer
   les lignes restantes. OFFSET 0 revient à oublier la clause
   OFFSET, tout comme OFFSET avec un argument
   NULL.
  
   Si à la fois OFFSET et LIMIT
   apparaissent, alors les OFFSET lignes sont laissées avant de
   commencer le renvoi des LIMIT lignes.
  
   Lors de l'utilisation de LIMIT, il est important d'utiliser une
   clause ORDER BY contraignant les lignes résultantes dans un ordre
   unique. Sinon, vous obtiendrez un sous-ensemble non prévisible de lignes de
   la requête. Vous pourriez demander les lignes de 10 à 20, mais dans quel
   ordre ? L'ordre est inconnu si vous ne spécifiez pas ORDER
   BY.
  
   L'optimiseur de requêtes prend LIMIT en compte lors de la
   génération des plans de requêtes, de façon à ce que vous obteniez
   différents plans (avec différents ordres de lignes) suivant ce que vous
   donnez à LIMIT et OFFSET. Du coup, utiliser des
   valeurs LIMIT/OFFSET différentes pour sélectionner
   des sous-ensembles différents d'un résultat de requête donnera des
   résultats inconsistants sauf si vous forcez un ordre de
   résultat prévisible avec ORDER BY. Ceci n'est pas un bogue ;
   c'est une conséquence inhérente au fait que le SQL ne promette pas de
   délivrer les résultats d'une requête dans un ordre particulier sauf si
   ORDER BY est utilisé pour contraindre l'ordre.
  
   Les lignes passées par une clause OFFSET devront toujours être
   traitées à l'intérieur du serveur ; du coup, un OFFSET
   important peut être inefficace.