Dans MariaDB, vous pouvez utiliser le LIMIT
clause pour réduire le nombre de lignes renvoyées par une requête. Le FOUND_ROWS()
La fonction peut être utilisée dans de telles requêtes pour renvoyer le nombre de lignes qui auraient été renvoyées si le LIMIT
clause non incluse.
Cela peut être pratique, car cela vous permet d'obtenir ces informations sans avoir à exécuter à nouveau la requête.
Le FOUND_ROWS()
La fonction peut également être utilisée pour renvoyer le nombre de lignes réellement renvoyées par l'instruction limited, si c'est ce dont vous avez besoin.
Syntaxe
La syntaxe ressemble à ceci :
FOUND_ROWS()
Aucun argument n'est requis ou accepté.
Pour obtenir le nombre de lignes renvoyées par une instruction, incluez SQL_CALC_FOUND_ROWS
dans l'instruction, puis exécutez FOUND_ROWS()
dans une requête distincte (après avoir exécuté la requête initiale).
Exemple
Voici un exemple pour illustrer le fonctionnement de la fonction.
Supposons que nous créons une table comme celle-ci :
SELECT SQL_CALC_FOUND_ROWS *
FROM Pets
LIMIT 2;
Résultat :
+-------+-----------+---------+---------+------------+ | PetId | PetTypeId | OwnerId | PetName | DOB | +-------+-----------+---------+---------+------------+ | 1 | 2 | 3 | Fluffy | 2020-11-20 | | 2 | 3 | 3 | Fetch | 2019-08-16 | +-------+-----------+---------+---------+------------+
Seules deux lignes ont été renvoyées, comme spécifié par le LIMIT
clause.
Cependant, utilisons maintenant FOUND_ROWS()
pour voir combien de lignes auraient été renvoyées si nous n'avions pas utilisé le LIMIT
clause :
SELECT FOUND_ROWS();
Résultat :
+--------------+ | FOUND_ROWS() | +--------------+ | 8 | +--------------+
Il nous indique que huit lignes auraient été renvoyées si nous n'avions pas utilisé le LIMIT
clause.
Nous pouvons le vérifier en exécutant la requête sans le LIMIT
clause :
SELECT *
FROM Pets;
Résultat :
+-------+-----------+---------+---------+------------+ | PetId | PetTypeId | OwnerId | PetName | DOB | +-------+-----------+---------+---------+------------+ | 1 | 2 | 3 | Fluffy | 2020-11-20 | | 2 | 3 | 3 | Fetch | 2019-08-16 | | 3 | 2 | 2 | Scratch | 2018-10-01 | | 4 | 3 | 3 | Wag | 2020-03-15 | | 5 | 1 | 1 | Tweet | 2020-11-28 | | 6 | 3 | 4 | Fluffy | 2020-09-17 | | 7 | 3 | 2 | Bark | NULL | | 8 | 2 | 4 | Meow | NULL | +-------+-----------+---------+---------+------------+
J'ai également supprimé le SQL_CALC_FOUND_ROWS
de la déclaration, car nous n'en avions pas besoin cette fois-ci.
Omettre le SQL_CALC_FOUND_ROWS
Options
Si vous omettez le SQL_CALC_FOUND_ROWS
l'option FOUND_ROWS()
la fonction renvoie le réel nombre de lignes renvoyées. En d'autres termes, il renvoie le nombre de lignes renvoyées après le LIMIT
clause a été appliquée.
Voici le même exemple sans le SQL_CALC_FOUND_ROWS
choix :
SELECT *
FROM Pets
LIMIT 2;
Résultat :
+-------+-----------+---------+---------+------------+ | PetId | PetTypeId | OwnerId | PetName | DOB | +-------+-----------+---------+---------+------------+ | 1 | 2 | 3 | Fluffy | 2020-11-20 | | 2 | 3 | 3 | Fetch | 2019-08-16 | +-------+-----------+---------+---------+------------+
Maintenant, exécutez FOUND_ROWS()
:
SELECT FOUND_ROWS();
Résultat :
+--------------+ | FOUND_ROWS() | +--------------+ | 2 | +--------------+
Cette fois FOUND_ROWS()
a renvoyé 2
au lieu de 8
.
Requêtes sans LIMIT
Article
Le même concept peut être appliqué aux requêtes sans LIMIT
clause.
Exemple :
SELECT *
FROM Pets;
Résultat :
+-------+-----------+---------+---------+------------+ | PetId | PetTypeId | OwnerId | PetName | DOB | +-------+-----------+---------+---------+------------+ | 1 | 2 | 3 | Fluffy | 2020-11-20 | | 2 | 3 | 3 | Fetch | 2019-08-16 | | 3 | 2 | 2 | Scratch | 2018-10-01 | | 4 | 3 | 3 | Wag | 2020-03-15 | | 5 | 1 | 1 | Tweet | 2020-11-28 | | 6 | 3 | 4 | Fluffy | 2020-09-17 | | 7 | 3 | 2 | Bark | NULL | | 8 | 2 | 4 | Meow | NULL | +-------+-----------+---------+---------+------------+
Maintenant, exécutez FOUND_ROWS()
:
SELECT FOUND_ROWS();
Résultat :
+--------------+ | FOUND_ROWS() | +--------------+ | 8 | +--------------+
Autres déclarations
Le FOUND_ROWS()
La fonction peut également être utilisée sur d'autres instructions, telles que SHOW
, DESCRIBE
, et HELP
.