From 5a73ec3a06fa85abb59f956437edb95d3f8a4524 Mon Sep 17 00:00:00 2001 From: medina5 Date: Sat, 27 Sep 2025 07:13:38 +0200 Subject: [PATCH] draft --- draft.md | 7 +++++++ sql.dql.md | 11 ++++------- tp2.md | 2 +- 3 files changed, 12 insertions(+), 8 deletions(-) create mode 100644 draft.md diff --git a/draft.md b/draft.md new file mode 100644 index 0000000..67c5cc5 --- /dev/null +++ b/draft.md @@ -0,0 +1,7 @@ +LIMIT ALL revient à omettre la clause LIMIT, tout comme LIMIT avec un argument NULL. + +OFFSET 0 revient à omettre la clause OFFSET, tout comme OFFSET avec un argument NULL. + +L'optimiseur de requêtes prend en compte LIMIT lors de la génération des plans de requête, vous obtiendrez donc très probablement différents plans (générant différents ordres de lignes) en fonction de ce que vous donnez pour LIMIT et OFFSET. Ainsi, l'utilisation de différentes valeurs LIMIT/OFFSET pour sélectionner différents sous-ensembles d'un résultat de requête donnera des résultats incohérents à moins que vous n'appliquiez un classement prévisible des résultats avec ORDER BY. Ce n'est pas un bug; 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 ; par conséquent, un OFFSET important pourrait être inefficace. diff --git a/sql.dql.md b/sql.dql.md index 024ac07..7e50584 100644 --- a/sql.dql.md +++ b/sql.dql.md @@ -95,17 +95,14 @@ ORDER BY age DESC, nom ASC; ## Pagination -Si un nombre limite est donné, pas plus de ce nombre de lignes sera renvoyé (mais peut-être moins, si la requête elle-même génère moins de lignes). LIMIT ALL revient à omettre la clause LIMIT, tout comme LIMIT avec un argument NULL. +Si un nombre limite est donné, pas plus de ce nombre de lignes sera renvoyé (mais peut-être moins, si la requête elle-même génère moins de lignes). -OFFSET dit de sauter autant de lignes avant de commencer à renvoyer des lignes. OFFSET 0 revient à omettre la clause OFFSET, tout comme OFFSET avec un argument NULL. +`OFFSET` dit de sauter autant de lignes avant de commencer à renvoyer des lignes. -Si OFFSET et LIMIT apparaissent, les lignes OFFSET sont ignorées avant de commencer à compter les lignes LIMIT renvoyées. +Si `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ésultats dans un ordre unique. Sinon, vous obtiendrez un sous-ensemble imprévisible des lignes de la requête. Vous demandez peut-être les lignes du dixième au vingtième, mais du dixième au vingtième dans quel ordre ? L'ordre est inconnu, sauf si vous avez spécifié ORDER BY. +Lors de l'utilisation de `LIMIT`, il est important d'utiliser une clause `ORDER BY` qui contraint les lignes de résultats dans un ordre unique. Sinon, vous obtiendrez un sous-ensemble imprévisible des lignes de la requête. Vous demandez peut-être les lignes du dixième au vingtième, mais du dixième au vingtième dans quel ordre ? L'ordre est inconnu, sauf si vous avez spécifié `ORDER BY`. -L'optimiseur de requêtes prend en compte LIMIT lors de la génération des plans de requête, vous obtiendrez donc très probablement différents plans (générant différents ordres de lignes) en fonction de ce que vous donnez pour LIMIT et OFFSET. Ainsi, l'utilisation de différentes valeurs LIMIT/OFFSET pour sélectionner différents sous-ensembles d'un résultat de requête donnera des résultats incohérents à moins que vous n'appliquiez un classement prévisible des résultats avec ORDER BY. Ce n'est pas un bug; 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 ; par conséquent, un OFFSET important pourrait être inefficace. ## Agrégation diff --git a/tp2.md b/tp2.md index 510789b..8a7dc74 100644 --- a/tp2.md +++ b/tp2.md @@ -57,7 +57,7 @@ Sélectionner les colonnes prénom (firstName), nom (lastName) et ville (City) d ```sql ``` -- Différent de +- Afficher les employés qui ne sont pas de la ville de Calgary ```sql ```