7.6. LIMIT et OFFSET

LIMIT et OFFSET vous permettent de récupérer seulement une partie des lignes générées par le reste de la requête:

Si un nombre limite est donné, pas plus de lignes seront retournées (mais peut-être moins, si la requête elle-même donne moins de lignes). LIMIT ALL revient à omettre la clause LIMIT.

OFFSET dit d’ignorer autant de lignes avant de commencer à renvoyer des lignes. OFFSET 0 est identique à l’omission de la clause OFFSET., Si les lignes OFFSET et LIMIT apparaissent, les lignes OFFSET sont ignorées avant de commencer à compter les lignes LIMIT renvoyées.

lors de L’utilisation de LIMIT, il est important d’utiliser une clause ORDER BY qui contraint les lignes de résultat dans un ordre unique. Sinon, vous obtiendrez un sous-ensemble imprévisible des lignes de la requête. Vous demandez peut-être les dixième à vingtième rangs, mais dixième à vingtième dans quel ordre? La commande est inconnue, sauf si vous avez spécifié ORDER BY.,

l’optimiseur de requête prend en compte la limite lors de la génération d’un plan de requête, vous êtes donc très susceptible d’obtenir des plans différents (donnant des ordres de lignes différents) en fonction de ce que vous donnez pour la limite et le décalage. Ainsi, l’utilisation de différentes valeurs de limite / décalage pour sélectionner différents sous-ensembles d’un résultat de requête donnera des résultats incohérents, sauf si vous appliquez un ordre de résultat prévisible avec ORDER BY. Ce n’est pas un bogue; c’est une conséquence inhérente du fait que SQL ne promet pas de fournir les résultats d’une requête dans un ordre particulier à moins que ORDER BY ne soit utilisé pour contraindre l’ordre.,

Les lignes ignorées par une clause OFFSET doivent toujours être calculées à l’intérieur du serveur; un décalage important peut donc être inefficace.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *