Maison >base de données >tutoriel mysql >Comment puis-je rechercher efficacement un numéro dans les N dernières lignes d'une grande table MySQL ?

Comment puis-je rechercher efficacement un numéro dans les N dernières lignes d'une grande table MySQL ?

Barbara Streisand
Barbara Streisandoriginal
2024-11-20 03:19:01862parcourir

How Can I Efficiently Search for a Number in the Last N Rows of a Large MySQL Table?

Recherche efficace d'un nombre dans les N dernières lignes d'une grande table MySQL

Dans une table MySQL massive avec des millions de lignes, vous pouvez rencontrer le besoin de déterminer si un numéro spécifique apparaît dans les n dernières lignes. Pour le faire efficacement, pensez à utiliser l'approche suivante :

En commençant par le concept proposé par @chaos, quelques modifications cruciales améliorent les performances de la requête :

  • ORDER BY explicite pour LIMIT : Spécifiez toujours ORDER BY en conjonction avec LIMIT pour garantir l'ordre des lignes. S'appuyer sur un classement implicite peut conduire à des résultats incohérents et n'est pas portable.
  • Ordre décroissant : En classant par ordre décroissant, vous éliminez le besoin de connaître au préalable le nombre total de lignes du tableau. .
  • Nom de corrélation pour la table dérivée : Attribuez un nom de corrélation (alias de table) à la table dérivée pour la distinguer de la table d'origine.

Avec ceux-ci modifications en place, la requête optimisée devient :

SELECT `id`
FROM (
    SELECT `id`, `val`
    FROM `big_table`
    ORDER BY `id` DESC
    LIMIT $n
) AS t
WHERE t.`val` = $certain_number;

Cette requête recherche efficacement l'occurrence de $certain_number dans les $n dernières lignes de la big_table, offrant une solution rapide et fiable pour vos besoins en données.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn