Recherche d'un nombre dans les N dernières lignes d'une grande table MySQL
Dans ce scénario, vous disposez d'une longue table avec des millions de lignes, chacune ayant un index ( auto-incrémentation) et un champ entier. Vous souhaitez déterminer rapidement si un nombre spécifié apparaît dans les n dernières lignes du tableau.
Solution efficace
L'approche la plus efficace consiste à exploiter une table dérivée comme suit :
SELECT `id`
FROM (
SELECT `id`, `val`
FROM `big_table`
ORDER BY `id` DESC
LIMIT $n
) AS t
WHERE t.`val` = $certain_number;
Copier après la connexion
Explication :
- Cette requête établit une table dérivée, en sélectionnant le id et val de la big_table.
- Il trie la table dérivée par ordre décroissant en fonction de la colonne id, en garantissant que les lignes les plus récentes apparaissent en premier.
- La clause LIMIT $n restreint la résultat défini sur les n lignes les plus récentes.
- Enfin, la condition WHERE fait correspondre la colonne val de la table dérivée au certain_number fourni, identifiant les lignes contenant le numéro dans les n dernières lignes.
Avantages :
-
Recherche indexée : Le tri par la colonne d'identifiant d'auto-incrémentation prend avantage de l'index de table, optimisant la recherche.
-
Performance : La limitation de l'ensemble de résultats aux n dernières lignes élimine le besoin d'analyser l'intégralité de la table, ce qui améliore considérablement les performances.
-
Flexibilité : La requête vous permet de modifier le paramètre $n pour rechercher dans différentes plages des dernières lignes.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!